Skocz do zawartości

[Delphi]Wskaźnik na procedure


5corpio

Polecane posty

  • 3 years later...
Sorki że odgrzebuje stary temat, ale czy Toster lub ktoś inny mógłby podać przykład jak mam użyć
procedure of object dla procedury, ktora ma parametry? Nie dogoolowałem się do tego. A chcę - w
Ekspert Commanderze, ze źródeł z "KŚ Eksperta", ktory modyfikuje w ramach ćwiczeń dla siebie na
maksa uprościc zdarzenie OnDblClick dla ListView. Teraz są dwa osobne, a ja chcę zrobić jedno, w
zależności od tego na jakim ListView klikamy lub naciskamy klawisze - Lewym lub Prawym. Czy by
to zrobić trzeba kombinować tak jak poniżej czy jest możliwość ustawienia wskaźnika na procedurę
z parametrami dla obiektu dziedziczącego po formatce? Prosił bym o przykładowy kod, bo póki co
to zrobiłem jedną procedurę z parametrem dodatkowym TListView, podajemy w nim na którym to
z ListView mamy operować, a proceudra sprawdza czy jest to lewy ListView, czy prawy. Jednak z
pewnością da się inaczej. Tylko właśnie pytanie jak wywołąć procedure of object z parametrem???
[code=Delphi] type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
procedure Cosik(S : string);
end;

var
Form1 : TForm1;

type
TOdForm1 = class(TForm1)
public
S : string;
procedure Ble;
end;

implementation

{$R *.dfm}

procedure TOdForm1.Ble;
begin
Form1.Cosik(S);
end;

procedure TForm1.Cosik(S : string);
begin
ShowMessage(S);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
A : TOdForm1;
begin
A := TOdForm1.Create(Self);;
A.S := 'lalala';
A.Ble;
end;

end. [/code]

Pozdrawiam: olesio

Link do komentarza
Udostępnij na innych stronach

Nie jestem pewien czy pisze na temat, ale moze o to chodzi:

[code=Delphi]
TCos = class
procedure cosTam(i: integer);
end;

TJakasProcka = procedure(i:integer) of object;

procedure TCos.cosTam(i: integer);
begin
ShowMessage(IntToStr(i));
end;

var
prc: TJakasProcka;
cl: TCos;
begin
cl := TCos.create;
prc := cl.cosTam; //albo @cl.cosTam pisze z dyni
prc(10);
FreeAndNil(cl);
prc(11); //suprajs wciaz dziala tongue.gif
end;
[/code]

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Dziękuję - działa ok. Dokładnie to chodziło mi o coś takiego jak poniżej. I mam nadzieję, że ten
wątek przyda się jeszcze jakimś polskim programistom Delphi, bo łatwo można go wygooglować.
[code=Delphi] //...
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
procedure CosTam(I : integer);
end;

var
Form1 : TForm1;

implementation

{$R *.dfm}

procedure TForm1.CosTam(I : integer);
begin
ShowMessage(IntToStr(I));
end;

procedure TForm1.Button1Click(Sender: TObject);
type
TJakasProcka = procedure(I : integer) of object;
var
Prc : TJakasProcka;
begin
Prc := CosTam;
Prc(10);
end;
//... [/code]

Pozdrawiam: olesio

Link do komentarza
Udostępnij na innych stronach

Witam.
Temat spadł mi z nieba.
Jakby jeszcze była możliwość zamiany Stringa na procedurę lub funkcję,
coś w stylu

[code=Delphi]
var
S: String;
begin
S:= 'Dodaj';

if JesliIstniejeProcedura(S) then begin
ZamieńStringaNaProcedure;
WywołajProcedureZParametermLubBez;
end;
[/code]
Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...