Dynamiczne okna, a parametry funkcji

Odpowiedz Nowy wątek
2007-01-04 15:53
0

Witam!
Mam następujący problem: chcę stworzyć dynamicznie okno z przyciskiem, który po wciśnięciu wywoła inną procedurę. Nie wiem tylko, jak do tej drugiej przekazać parametry. Chodzi mi o coś takiego:

procedure TForm1.proc1(Sender : TObject; par1 : integer; par2 : string);
var
okno : TForm;
wyslij : TButton

begin
  okno := tform.Create(self);
  okno.Left:=10;
  okno.Top:=10;
  okno.Width:=500;
  okno.Height:=300;
  okno.Caption:='nowe';
  okno.Parent:=okno;
  okno.Visible:=True;

  wyslij := tbutton.Create(okno);
  wyslij.Left := 400;
  wyslij.Top := 240;
  wyslij.Width := 60;
  wyslij.Height := 20;
  wyslij.Parent := okno;
  wyslij.Visible := true;
  wyslij.Caption := 'Wyslij';
  wyslij.Name := 'sendmess';
  wyslij.OnClick := napisz;

No i oprocz tego mam jeszcze procedure napisz. I chce zrobić tak, aby parametry par1 i par2 były przekazane do procedury napisz. Tyle tylko, że przy deklaracji:

procedure napisz(Sender : TObject; param1 : integer; param2 : string);

Próba wywołania

wyslij.OnClick := napisz(self; par1; par2);

kończy się błędem kompilacji:

[Error] plik.pas(235): Incompatible types: 'TNotifyEvent' and 'procedure, untyped pointer or untyped parameter'

Pozostało 580 znaków

2007-01-04 19:14
0

Procedura obsługi zdarzenia MUSI być metodą obiektu.


Mam nadzieję, że pomogłem :)

Łukasz Brodny

Pozostało 580 znaków

2007-01-05 02:43
0

bo lista parametrów musi się zgadzać


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2007-01-07 01:43
0

No ale dalej nie wiem jak wywolac ta procedure

Pozostało 580 znaków

2007-01-07 14:15
dj
0

Czyli masz taką sytuację

Jeden przycisk na formie tworzy dynamicznie formę z przyciskiem i ten przycisk na formie ma wywołać jakąś tam procedure z parameterm 1 i parameterm 2;

Jeżeli o to chodzi to ja proponuje to zrobić następująco:

TParams = record
Parametr1: Typ_par_1;
Paramter2: Typ_par_2;
end;
PParams = ^TParams;

pÓźniej przy dynamicznym tworzeniu formularza robimy GetMem(P, sizeof(TParams)); gdzie P: PParams;

ustawiamy odpowiednie parametry w P i dla stworzonego przycisku na dynamicznej formie robimy coś takiego button.Tag:= Integer(P);

button.OnClick dajesz TNotifyEvent i w tej procedurze musisz z Sendera odzyskać P:

PParams((Sender as TButton).Tag) // i tu masz swoje parametry


Great spirits have always encountered violent opposition from mediocre minds.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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