Є модуль:
unit UFDCE;
uses
# XA0; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, # XA0; ComCtrls, StdCtrls;
type
# XA0; TFDCE = class (TForm)
# XA0; # XA0; DateTimePicker1: TDateTimePicker;
# XA0; # XA0; procedure FormResize (Sender: TObject);
# XA0; end;
procedure TFDCE.FormResize (Sender: TObject);
begin
# XA0; DateTimePicker1.Height: = ClientHeight;
# XA0; DateTimePicker1.Width: = ClientWidth;
end;
Далі в програмі, якщо шукати цей клас FindClass ( "FDCE");
, то виникає помилка: "клас не найден".
Якщо виконувати реєстрацію при створенні головної форми, відбувається те ж саме. Підкажіть це глюк або я щось неправильно роблю? Дякуємо.
а тобі не здається що TFDCE і FDCE це різні речі?
Схоже, я щось неправильно роблю або про яку директиву не знаю: у мене жоден клас не реєструється, TListBox наприклад.
якщо клас не знайдений, значить або ім'я неправильне, або register не викликається зовсім
Схоже, звичайно, що не викликається, зрозуміти б ще чому?
Наприклад тому, що модуля немає ні в одному з юзез
initialization
ShowMessage ( "bla bla bla");
RegisterClass (TFDCE);
> Наприклад тому, що модуля немає ні в одному з юзез
досить, щоб він був перерахований в .dpr
Зверніть увагу на параметр:
function RegisterClass (const lpWndClass: TWndClass): ATOM; stdcall;
і подивіться як робиться реєстрація в forms.pas
> _Guest_ # XA0; (01.07.08 13:39) [10]
> Питання схоже простіше: при створенні головного вікна виконую
> RegisterClass (TListBox);
> Потім по кнопці: FindClass ( "TListBox"); - все помилка: клас
> Не найден. Чому? Явно щось пропускаю, але знайти не можу.
Ти чогось не договорюєш.
> Зверніть увагу на параметр:
Це трохи з іншої опери.
Ось приклад, шукай відмінності у себе
uses
# XA0; Forms,
# XA0; main in "main.pas",
# XA0; other in "other.pas";
begin
# XA0; Application.Initialize;
# XA0; Application.CreateForm (TForm1, Form1);
# XA0; Application.Run;
end.
interface
uses
# XA0; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
# XA0; Dialogs, StdCtrls;
type
# XA0; TForm1 = class (TForm)
# XA0; # XA0; Button1: TButton;
# XA0; # XA0; procedure Button1Click (Sender: TObject);
# XA0; end;
var
# XA0; Form1: TForm1;
procedure TForm1.Button1Click (Sender: TObject);
var
# XA0; F: TCustomForm;
begin
# XA0; F: = TFormClass (FindClass ( "TForm2")). Create (Self);
# XA0; try
# XA0; # XA0; SetStrProp (F, "StrProp", "Hello, world!");
# XA0; # XA0; F.ShowModal;
# XA0; finally
# XA0; # XA0; F.Free;
# XA0; end;
end;
interface
uses
# XA0; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
# XA0; Dialogs, StdCtrls;
type
# XA0; TForm2 = class (TForm)
# XA0; # XA0; Edit1: TEdit;
# XA0; # XA0; procedure FormShow (Sender: TObject);
# XA0; private
# XA0; # XA0; FStrProp: string;
# XA0; published
# XA0; # XA0; property StrProp: string read FStrProp write FStrProp;
# XA0; end;
var
# XA0; Form2: TForm2;
procedure TForm2.FormShow (Sender: TObject);
begin
# XA0; Edit1.Text: = FStrProp;
end;
> У момент створення форми (не автоматичне), якій належить
> Цей компонент отримую повідомлення: клас TFDCE не найден.
> # XA0;
в uses форми не вказано юніт для цього компонента?
> _Guest_ # XA0; (01.07.08 14:12) [16]
> # XA0; роблю простий приклад уже описаний в [10] і все одно отримую
> Помилку.
Зроби те ж саме, в новому проекті.
Якщо будуть помилка при пошуку лістбокса - код сюди.
> В uses форми не вказано юніт для цього компонента?
Компілятор не пропустить RegisterClass.
> У момент створення форми (не автоматичне), якій належить
> Цей компонент отримую повідомлення: клас TFDCE не найден
Справа за малим - знайти що не так з основним проектом, в якому десяток форм і купа коду, але зрозуміло, що це мій геморой. Спасибі всім, не штовхайте сильно, якщо через якийсь час знову відверну. Бо звідки колупати навіть не уявляю: в проекті крім відображення даних в TStringGrid з бази нічого немає. Почну поки викидати все послідовно.
Все викинув крім головної форми - не працює. Зовсім випадково ні у кого ідей немає чим можна задавити зв'язку RegisterClass - FindClass?
коду ми не побачимо?
> _Guest_ # XA0; (01.07.08 15:17) [22]
> Все викинув крім головної форми - не працює. Цілковито
> Випадково ні у кого ідей немає чим можна задавити зв'язку RegisterClass
> - FindClass?
Тримаєш кнопку Ctrl і клацаєш Мишак на Букаву RegisterClass, після дивишся в що з'явилися Букаву і багато думаєш.
Задавити можна кодом, твоїм кодом.
> Дослідним шляхом з'ясував, що до цієї ситуації приводить uses
> QControls # XA0; в одному з модулів
ну так у нього мабуть свій RegisterClass є
Пам'ять: 0.79 MB
Час: 0.032 c