onClick - runtime

0

witam

wlacze dzisiaj z pozoru prostym problemem. chce podpiac obsluge guzika dla dynamicznie utworzonego komponentu. problem polega na tym ze jesli stworze sobie nowy projekt i dodam tam ten kod to dziala ok natomiast jesli przeniose ten sam kod do innej aplikacji (ma pare tysiecy lini kodu) to juz nie dziala bo dostaje blad:

[Error] Main.pas(2323): Incompatible types: 'System.TObject' and 'Main.TObject'

kod jest taki

deklaracja w TfrmMain w private:
procedure RecentFilesMenuClick(Sender: TObject);

definicja w TfrmMain:
procedure TfrmMain.RecentFilesMenuClick(Sender: TObject);
begin
//
end;

kod w innej funkcji:
var tmpEdit: TEdit;
...
tmpEdit:= TEdit.Create(frmMain);
tmpEdit.OnClick := self.RecentFilesMenuClick; // tutaj jest blad

dodam jeszcze tylko ze jak wpisze tmpEdit.OnClick i wlacze sobie dopelniania to na liscie nie ma ani jednej procedury pomimo ze sa ich dzisiatki w tej klasie z odpowiednimi parametrami (Sender: TObject).

dzieki za pomoc
pozdrawiam
marcin

0

klasa jest zadeklarowana tak:
TfrmMain = class(TForm)
czyli tak samo jak w nowym projekcie gdzie mozna przeciez popinac onClick

0

W module Main masz zadeklarowaną klasę TObject. Jej nazwa koliduje z klasą TObject zadeklarowaną domyślnie przez kompilator jako należącą do modułu System.

(nawiasem mówiąc, moduł System tak naprawdę nie istnieje; nie ma pliku .pas ani .dcu zawierającego jego funkcje i procedury i nie można napisać modułu, który zawierałby dokładnie to samo co System z powodu m.in. nieścisłości listy argumentów procedur takich jak Write, WriteLn czy Ord, które należą do tego "modułu").

0

faktycznie, jeden z modulow tworzyl sobie tyl TObject i dlatego byl konflikt.

dzieki wielkie!

1 użytkowników online, w tym zalogowanych: 0, gości: 1