Entwickler-Ecke
Sonstiges (Delphi) - aus listbox ausführen?
kabizolis - Fr 01.04.05 13:10
Titel: aus listbox ausführen?
ich habe ein problem...
ich lasse in eine listbox befehle generieren...
diese will ich dann ausführen wie kann ich das tun?
ein beispiel dazu:
in der listbox stehen jetzt da befehle wie zum beispiel
k3.caption := 'hallo';
form3.width := 220;
...
wie kann ich diese befehle ausführen lassen?
Moderiert von
Gausi: Topic aus Dateizugriff verschoben am Fr 01.04.2005 um 14:05
maveric - Fr 01.04.05 13:42
Ist das jetzt auch ein Aprilscherz ????
Was hast du denn davon wenn du deine Anweisungen in die listbox reinschreibst??? Probiers mal mit einem button !?!? eventuell procedure ,..... !?!?
kabizolis - Fr 01.04.05 13:51
nein, das ist kein aprilscherz!
das hat schon einen sinn... meine kentnisse in delphi halten sich in grenzen.... es gäbe sicher eine bessere lösung.
ich habe buttons, die ich folgendermassen benannt habe:
b1, b2, b3, b4,....
dass ich nicht für jeden button einen eigenen roman schreiben muss, habe ich einen timer gesetzt, der je nach dem welchen knopf ich drücke eine ausgabe in eine listbox zwischenspeichert....
nun will ich diesen erzeugten text ausführen lassen und zum beispiel.
abhängig vom gedrückten knopf... soll unter anderem eine form die farbe wechseln.
die bezeichnungen der form
f1, f2, f3, f4,...
ich hoffe, du weist wie ich meine...
der erzeugte text soll nun ausgeführt werden.
Delete - Fr 01.04.05 13:56
Eigenschaften kannst du zur Laufzeit setzen. Das ist eine einfache zuweisung. Code ausführen wird wohl nur mit einer Script-Komponente möglcih sein, es sei denn du willst das selber schreiben.
maveric - Fr 01.04.05 14:03
kabizolis hat folgendes geschrieben: |
nun will ich diesen erzeugten text ausführen lassen .
. |
Soll das ne Anweisung sein ??
Also, du fügt in listbox1 (listbox1.items.add ({dein Inhalt});) etwas hinzu. Richtig?
Und diesen Text z.B. k3.caption:= .... möchtest du jetzt ausgeführt haben ?
Dann schreib doch im Timer den Befehl mitrein.
Button-->timer---> 1. Anweisung ausführen (k3.caption:=...)
2. listbox1.items.add ({Anweisung als Text ??});
kabizolis - Fr 01.04.05 14:16
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| listbox2.Items[0] := 'b' + inttostr(variable) + '.Caption := Anzeige.Text;'; listbox2.Items[1] := 'listbox1.Items['+ inttostr(5*variable-4) +'] := Anzeige.Text;'; listbox2.Items[2] := 'h'+ inttostr(variable) +'.Brush.Color := Farbe.Selected;'; listbox2.Items[3] := 'listbox1.Items['+ inttostr(5*variable-3) +'] := colortostring(Farbe.Selected);'; listbox2.Items[4] := 'listbox1.Items['+ inttostr(5*variable-2) +'] := Empfang.Text;'; listbox2.Items[5] := 'Empfang.Text := '+ chr(39) + chr(39) +';'; listbox2.Items[6] := 'Knopf.Enabled := false;'; |
so sieht der quelltext aus....
und so das ergebnis...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| b1.caption := Anzeige.Text; listbox1.Items[1] := Anzeige.Text; h1.Brush.Color := Farbe.Selected; listbox1.Items[2] := colortostring(Farbe.Selected); listbox1.Items[3] := Empfang.Text; Empfang.Text := ''; Knopf.Enabled := false;
b2.caption := Anzeige.Text; listbox1.Items[6] := Anzeige.Text; h2.Brush.Color := Farbe.Selected; listbox1.Items[7] := colortostring(Farbe.Selected); listbox1.Items[8] := Empfang.Text; Empfang.Text := ''; Knopf.Enabled := false; |
...u.s.w
das will ich dann ausführen lassen
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt und weitere hinzugefügt.
kabizolis - Fr 01.04.05 15:40
oder vielleicht einfacher....
wie kann ich das ausführen?
Delphi-Quelltext
1:
| 'b' + inttostr(variable) + '.Caption := Anzeige.Text' |
wäre wirklich sehr dankbar für eine brauchbare antwort, ich muss bis nächste woche damit fertig sein.
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt.
Karlson - Fr 01.04.05 15:50
kabizolis hat folgendes geschrieben: |
oder vielleicht einfacher....
wie kann ich das ausführen?
Delphi-Quelltext 1:
| 'b' + inttostr(variable) + '.Caption := Anzeige.Text' |
wäre wirklich sehr dankbar für eine brauchbare antwort, ich muss bis nächste woche damit fertig sein.
Moderiert von Gausi: Code- durch Delphi-Tags ersetzt. |
Du kannst sowas nicht ausführen. Wie Luckie schon sagte, bräuchtest du dafür eine Scriptsprache. Delphi ist aber eine Compilersprache. Bevor du irgendwas ausführen kansnt muss es kompiliert werden, und das geht logischerweise nur mit compiler.
Die einzige Möglichkeit die dir bleibt ist die Eingabe anzuschauen und dann dementsprechend zu handeln, mit If-abfragen o.ä.
also z.B.
Delphi-Quelltext
1: 2: 3:
| begin if listbox1.items[i] = 'form1.width := 500' then form1.width := 500; end; |
Anders gehts nicht. Aber es gibt vereinfachungen. Siehe
FINDCOMPONENT.
Hack Gott - Fr 01.04.05 15:52
Titel: Nochmal?!
Also soll jetzt Beispielsweise in deiner Datei die du dann in eine Listbox lädst
timer1.enabled := true stehen. Das Programm wird gestartet, die Datei in der das steht wird in eine Listbox geladen, und der Befehl wird ausgeführt, egal was drinne steht (natürlich gültiger delphi code)??
kabizolis - Fr 01.04.05 16:02
erstmal dankefür die raschen und kompetenten antworten!
jetzt hab' ich mich aber wohl schlecht ausgedrückt....
mein problem, die alte version lassen wir sein, ist folgendes;
ich will diesen code einfach ausführen, diesmal ohne listbox, also ganz normal:
Delphi-Quelltext
1:
| 'b' + inttostr(variable) + '.Caption := Anzeige.Text' |
also b1, b2, b3, b4,.... sind buttons. ich will nicht jedesmal den gesamten text für jeden button schreiben wollen.
eigentlich würde es heissen müssen:
b1.Caption := Anzeige.Text;
oder
Delphi-Quelltext
1:
| b19.Caption := Anzeige.Text; |
ist das möglich?
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt, ein paar Absätze entfernt
Gausi - Fr 01.04.05 16:05
Ja, das ist möglich. Der Tip wurde bereits gegeben
FINDCOMPONENT.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!