![]() |
Button.OnClick Procedure aus DB lesen?
Hallo,
ist es möglich die OnClick (Event) aus einer DB zu lesen? Vielleicht so? :roll:
Delphi-Quellcode:
Button1.OnClick := Tabel1.FieldByName('Funktion').Text;
|
AW: Button.OnClick Procedure aus DB lesen?
Delphi ist keine Skriptsprache. Die Ereignis-Behandler müssen von dir geschriebener Code sein der sich in der erstellten .exe-Datei befindet. Du kannst hingegen in der Datenbank hinterlegen welche der von dir geschriebenen Handler benutzt werden soll.
Delphi-Quellcode:
var
onClickName: String; begin onClickName := Tabel1.FieldByName('Funktion').AsString; if (onClickName = 'spezial') then Button1.OnClick := onClickSpezial else if (onClickName = 'super-spezial') then Button1.OnClick := onClickSuperSpezial else Button1.OnClick := onClickNormal; end; |
AW: Button.OnClick Procedure aus DB lesen?
ah :-D
super, danke für Deine Hilfe |
AW: Button.OnClick Procedure aus DB lesen?
Hmmm. Ich hab das noch nicht ausprobiert, aber das da
![]() behandelt Anonyme Funktionen wie Daten. Und Daten bekomme ich in die Datenbank +kann sie von dort lesen. 8-) Das da ist auch hilfreich: ![]() Solltest du da was ausprobieren, lass es uns wissen. |
AW: Button.OnClick Procedure aus DB lesen?
Zitat:
Methoden sind Zeiger. (eigentlich Zwei, aber wenn du das Objekt kennst, dann nur noch Einer) Die Namen sind "eventuell" in der TypeInfo und RTTI hinterlegt und man kann darüber den Zeiger bekommen. ![]() Das ![]() ![]() ![]() ![]() Und dann gibt es noch Einiges in den Units TypInfo und RTTI. |
AW: Button.OnClick Procedure aus DB lesen?
Zitat:
Wenn man wirklich den Code speichern möchte, dann geht das IMHO nur wenn man eine Art Plugin-System implementiert was man mit DLLs oder BPLs machen kann und dann kann man diese dann als BLOB speichern. (Wobei ich mir jetzt keine sinnvoll Anwendung vorstellen kann) Oder man implementiert halt doch eine Scriptsprache ins Programm und speichert die Scripts. |
AW: Button.OnClick Procedure aus DB lesen?
Wenn man ins Programm
![]() Man braucht dann halt ein Script, dass man kompilieren und ausführen kann. Diese Scripts kann dan auch Ereignisroutinen enthalten, die man diversen Komponenten im Programm zuweisen kann. Ein ganz banales Beispiel, dass dem DataSet meines Editors 'ne AfterScroll-Routine zuweist wäre:
Delphi-Quellcode:
Ab jetzt wird beim Scrollen durch die Datenmenge in der Statuszeile der Inhalt des ersten Feldes des aktuellen Datensatzes angezeigt.
program Test;
procedure MachWas(DataSet: TDataSet); begin Status(DataSet.Fields.Fields[0].AsString); end; begin DataSet.AfterScroll := @MachWas; end. Das kann man analog auch mit jeder anderen Komponenten machen. Wenn man also in der Datenbank ein Script hat, das sowohl die Ereignisroutinen, als auch deren Zuweisung enthält, kann man das gewünschte umsetzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:19 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