![]() |
OnClick zur Runtime zuweisen
versuch grad einen History Funktion in mein Programm zu integrieren fü 10 Einträge
das Hinzufügen in ein MainMenu klappt
Delphi-Quellcode:
nun brauch ich für das OnClick auf die selben
var
x,y,HC : Integer; s,b : String; vName,Item : TMenuItem; ......... IniFile.WriteInteger('History','Count',HC+1); IniFile.WriteString('History',InttoStr(HC),'@'+NodeForDB+'@'+s+'@'); frmMain.History1.Clear; for HC := 0 to 10 do begin vName := TMenuItem.Create(Menu); b := IniFile.ReadString('History',InttoStr(HC),b); vName.Caption:=GetToken(b, '@', 3); // Entry versuche das grad so
Delphi-Quellcode:
+
// vName.OnClick := (frmMain.TreeView1.Selected := frmSearch.TreeItemSearch(frmMain.TreeView1,vname.Caption));
das führt aber zu Zitat:
|
Re: OnClick zur Runtime zuweisen
Du brauchst auch eine Methode mit der passenden Signatur
|
Re: OnClick zur Runtime zuweisen
Ähm wie bitte
|
Re: OnClick zur Runtime zuweisen
Mit Grundlagen hat man es scheinbar heutzutage nicht mehr so. Unter Signatur versteht man die Anzahl und Typen von Parametern und Rückgabewerten eine Prozedur/Funktion/Methode
|
Re: OnClick zur Runtime zuweisen
OnClick ist ein TNotifyEvent
Und das ist so definiert das es eine methode (procedure/funktion einer Klasse) sein muss ohne rückgabewert und mit einem Parameter vom Typ TObject. Wenn du diese Bedingungen erfüllst geht:
Delphi-Quellcode:
objectinstanz.OnClick = ClickMethode;
|
Re: OnClick zur Runtime zuweisen
Die Frage habe ich mir auch schon mal gestellt.
Aber warum klappt dann folgender Code nicht:
Delphi-Quellcode:
Meldung:
procedure ClickCustom(Sender: TObject);
begin ShowMessage('Test'); end; procedure TForm1.Button1Click(Sender: TObject); var A: Array of TButton; i: integer; begin SetLength(A,20); for i := 0 to Length(A)-1 do begin A[i] := TButton.Create(self); A[i].parent := Self; A[i].Top := i*3; A[i].Left := i*3; A[i].OnClick := clickcustom; A[i].Visible := true; end; end;
Code:
EDIT: Sinnvoll ist dieser Code nicht...
Inkompatible Typen: Methodenzeiger und reguläre Prozedur
|
Re: OnClick zur Runtime zuweisen
Wie der Compiler schon sagt: Du brauchst eine Methode und keine regüläre Procedure. Methode gibt es nur innerhalb von Klassen und sind die Procedure/Function von Klassen. Eine reguläre Procedure/Function ist eigenständig und gehört zu keiner Klasse.
|
Re: OnClick zur Runtime zuweisen
Okay überredet. Es funktioniert:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure ClickCustom(Sender:TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ClickCustom(Sender: TObject); begin ShowMessage('Test'); end; procedure TForm1.Button1Click(Sender: TObject); var A: Array of TButton; i: integer; begin SetLength(A,200); for i := 0 to Length(A)-1 do begin A[i] := TButton.Create(self); A[i].parent := Self; A[i].Top := i*3; A[i].Left := i*3; A[i].OnClick := clickcustom; A[i].Visible := true; end; end; end. |
Re: OnClick zur Runtime zuweisen
Das begreif ich nicht
Delphi-Quellcode:
for HC := 0 to 10 do
begin vName := TMenuItem(Menu); b := IniFile.ReadString('History',InttoStr(HC),b); with vName do begin Visible := true; vName.Caption:=GetToken(b, '@', 3); // Entry Name := 'Item1'+InttoStr(HC); //Das Item Muss schon Existieren? // Parent := frmMain; frmMain.Item11.OnClick :=showmessage('test');//das Onclick ereignis existiert bereits und soll mit Showmessage.. überschrieben werden? weil ich zum jetzigen zeitpunkt ja noch nicht weiß was es machen soll frmMain.History1.Add(vName); |
Re: OnClick zur Runtime zuweisen
Du scheinst unsere Beiträge glatt zu ignorieren.
|
Re: OnClick zur Runtime zuweisen
nein wie schon erwähnt verstehe ich nicht wie ich sie umsetzen kann
|
Re: OnClick zur Runtime zuweisen
Delphi-Quellcode:
procedure TfrmNain.Klicker( Sender: TObject);
begin showmessage('test');//das Onclick ereignis end; ... frmMain.Item11.OnClick := frmMain.Klicker; |
Re: OnClick zur Runtime zuweisen
aber wie ich schon schrieb weiß ich ja jetzt noch nicht wie das onclick ereignis aussieht
der Plan der ganzen Sache ist das ich die letzten 10 klicks in einen Treeview als History speichere diese wird im Mainmenü abgelegt was auch schonmal klappt nun soll aber beim klick auf einen dieser Einträge der Treeview diesen Eintrag wieder anzeigen der wiederum eine Datenbankabfrage auslöst ergo sieht das onClick ereignis doch jedesmal anders aus |
Re: OnClick zur Runtime zuweisen
Nein warum? Du musst nur anders an die Sache rangehen und die 10 Clicks in einer liste zwischenspeichern.
|
Re: OnClick zur Runtime zuweisen
Delphi-Quellcode:
kann ich zur Runtime statt
frmMain.TreeView1.Selected := frmSearch.TreeItemSearch(frmMain.TreeView1,[b]vname.Caption[/b])
Delphi-Quellcode:
auch die Caption vom gedrückten Item zuweisen wenn ja wie
vname.Caption
|
Re: OnClick zur Runtime zuweisen
Wie meinst du das?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz