Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Ansatz dynamische Komponentenerstellung
daywalker0086 - Mi 16.04.14 14:29
Titel: Ansatz dynamische Komponentenerstellung
Hallo Leute ein kleines Problem bei dem ich nicht weiter komme:
Ich habe eine VLC Komponente(TDosCommand)auf meinem Formular was ich so anspreche und das mir eine Memobox füllt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.Button4Click(Sender: TObject); var t:string; begin DosCommand2.CommandLine:= 'cmd.exe '; DosCommand2.WorkingDirectory:='C:\';
DosCommand2.OutputLines:= Memo1.Lines; DosCommand2.Execute; DosCommand2.SendLine('cd winavr/bin',TRUE); DosCommand2.SendLine('avrdude.exe -e -P usb -c avrispmkII -p m88p -e -U lfuse:w:0xd2:m -U hfuse:w:0xdc:m -U efuse:w:0x1:m -U flash:w:"Oelkuehler.hex":a',TRUE); end;
procedure TForm1.DosCommand2NewLine(Sender: TObject; NewLine: string; OutputType: TOutputType); begin cmd_receivedtext:= NewLine; if cmd_receivedtext <> NewLine then Memo1.Lines.Add(NewLine); end; |
Soweit so gut, da sich die Parameter aber ändern und sich dann die zurückgelieferten Infos ändern wollte ich in einer anderen Unit ein neues Objekt zur Laufzeit erzeugen.
Und da fangen die Probleme an hier mal der Code für die Erzeugung:
Wer ist Owner des Objekts und wie muss di eBehandlungsprocedure geschrieben werden, die in der ersten Implementierung TForm1.DosCommand2NewLine heißt?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| procedure programmieren();
implementation
uses rpp_unit; var Doscommand: TDoscommand; procedure programmieren(); var outp: string; begin Doscommand:= TDoscommand.Create( Wass muss hier rein?); DosCommand.CommandLine:= 'cmd.exe '; DosCommand.WorkingDirectory:='C:\';
DosCommand.OutputLines:= Form1.Memo1.Lines; DosCommand.Execute; DosCommand.SendLine('cd winavr/bin',TRUE); DosCommand.SendLine('avrdude.exe -e -P usb -c avrispmkII -p m88p -e -U lfuse:w:0xd2:m -U hfuse:w:0xdc:m -U efuse:w:0x1:m -U flash:w:"Oelkuehler.hex":a',TRUE);
end; |
Die Komponente muss ja nach Aufruf der Procedur Programmieren noch erreichbar sein um die Rückgabewerte auswerten zu können.
Für Hinweise färe ich dankbar, habe bis jetzt nur mit den grafischen Komponenten gearbeitet.
daywalker0086 - Mi 16.04.14 14:39
Kleiner Nachtrag:
Wenn ich im Create Ereignis als Owner Nil angebe funktioniert die Procedur erstmal, soweit so gut. (Ist das richtig?)
Jetzt muss ich nur noch irgendwie eine Procedur hinbekommen die den Rückgabewert verarbeitet wie bei
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.DosCommand2NewLine(Sender: TObject; NewLine: string; OutputType: TOutputType); begin cmd_receivedtext:= NewLine; if cmd_receivedtext <> NewLine then Memo1.Lines.Add(NewLine); end; |
in meinem Hauptformular. KAnn mir da noch jemand helfen?
So funktionierts leider nicht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure test(Sender: TObject); begin if Sender is TDoscommand then begin
showmessage('hat geklappt'); end; end; |
WasWeißDennIch - Mi 16.04.14 15:30
Mit einer regulären Prozedur wirst Du nicht weit kommen, es muss schon eine Methode sein, d.h. zu einer Klasse gehören. Außerdem muss die Signatur der Methode kompatibel zum Eventhandler sein, also die gleichen Parameter in der gleichen Reihenfolge aufweisen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!