Чи не реєструється клас registerclass

Є модуль:

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