Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Form ruasschmeißen
Smartie - Fr 24.06.05 08:14
Titel: Form ruasschmeißen
Servus!
Ok, so ist das, man denkt, man sei in der Abschlußphase eines Projektes und dann...
Ich habe folgendes Problem:
Mein Programm funktioniert zwar, aber ich habe eben eine Form mit drin.
Tja, und jetzt heißt es "schön was Sie da gemacht haben, aber schmeißen sie die Form raus".
Ok, ich denke, es könnte mit daran liegen, daß ich nicht wirklich OOT denke.
Ich muß also die Form rauswerfen, ich muß also auch Alles, was in der Form steht, rauswerfen. Das dumem ist, da steht eine ganze Menge und Jasocul erinnert sich sicherlich an meine Problematik, einige anweisungen an die Form binden zu müssen, da diese sonst nicht funktioniert hat.
Bisher habe ich die Form als meine Basis benutzt, ein Fundament, auf dem ich alles aufbaue.
Ok, und jetzt soll dieses Fundament weg, undich soll was anderes hinmodeln.
Nur was und wie?
Ich bitte um dringende Hilfe dabei.
Hier ein par Beispielevon den Dingen, die bisher auf Form1 basieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.FormCreate(Sender: TObject); begin RS232Activate := False; Form1.RadioButton1.Checked := true; Schreib_Bool := false; Warte_Bool0 := false; Warte_Bool1 := false; Hilf_Bool1 := false; Warte_Bool2 := false; Schreib_Check_Bool0 := false; Schreib_Check_Bool1 := false; Warn_Bool01 := false;
end; |
und natürlöich auch die ganze Com-Port-Geschichte:
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: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63:
| procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word); var I : Word; C : Char; S : String;
begin RS232Activate := True; Timer1.enabled := False; Timer1.enabled := True; S := '';
for I := 1 to Count do begin C := ApdComPort1.GetChar; case C of #0..#31 : S := S + C ; else S := S + C; end; end; tempBuffer := tempBuffer + S; if length(tempBuffer) >= StrtoInt(String_Datenmenge) then begin Warte_Bool1 := true; end;
if tempBuffer = (#6+#48) then begin if (Schreib_Bool = false) and (Schreib_Check_Bool0 = false) then begin ApdComPort1.OutPut := #02 ; end
else if Schreib_Check_Bool0 = true then begin Schreib_Check_Bool1 := true; tempBuffer := ''; end
else if Schreib_Bool = true then begin ApdComPort1.OutPut := #02 + Sende_String; Schreib_Check_Bool0 := true; Schreib_Bool := false; tempBuffer := ''; end;
end else if copy(tempBuffer,1, 1) = (#21) then begin balluff_fehler; ERROR_Handling; end;
end; |
Ihr seht, da ist einiges mit drin. Und es läuft auch nur auf meinem Fundament,dem Form, das bisher meine stütze war. Es tut fast weh sie zu entfernen, sie war das beständigste von anfang an und ist gewachsne. Wie die Erde eines Blumengartens, in dem nun die Blumen bleiben sollen, aber die Erde weg muß.
Ok, ich werde sentimental, Verziehung.
Herzlichen Dank und lieben Gruß
Smartie
retnyg - Fr 24.06.05 09:25
sollte nicht allzu schwer sein
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.FormCreate(Sender: TObject); begin RS232Activate := False; Form1.RadioButton1.Checked := true; Schreib_Bool := false; Warte_Bool0 := false; Warte_Bool1 := false; Hilf_Bool1 := false; Warte_Bool2 := false; Schreib_Check_Bool0 := false; Schreib_Check_Bool1 := false; Warn_Bool01 := false;
end; |
wird dann halt zu
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure initvalues; begin RS232Activate := False; Form1.RadioButton1.Checked := true; Schreib_Bool := false; Warte_Bool0 := false; Warte_Bool1 := false; Hilf_Bool1 := false; Warte_Bool2 := false; Schreib_Check_Bool0 := false; Schreib_Check_Bool1 := false; Warn_Bool01 := false; end;
procedure TForm1.FormCreate(Sender: TObject); begin initValues; end; |
so kannst du deinen code in eine unit oder ein consolenprog stecken, ohne auf die form angewiesen zu sein
jasocul - Fr 24.06.05 09:25
Sentimentaler Kerl :wink:
Das Prinzip ist folgendes:
Dum musst alle Komponenten zur Laufzeit erzeugen. Dazu ist eine Form nicht erforderlich.
Folgende Probleme können sich ergeben:
- Alle Einstellungen die du im OI gemacht hast, musst du nun manuell im Source machen.
- Sollte es Ereignisse/Methoden geben, die du im OI gemacht hast, musst du diese auch zur Laufzeit einbinden.
- Deine Variablen musst du dann in der Unit deklarieren und nicht mehr in der Form-Komponente.
Warum darfst du die Form eigentlich nicht haben? Soll das ein "nicht sichtbares" Programm sein? Oder eine Konsolen-Anwendung werden?
Notfalls bastellst du noch ein Memo auf die Form und "verkaufst" das als Protokoll, damit Schnittstellenfehler besser und schneller analysiert werden können. :wink:
Smartie - Fr 24.06.05 09:58
Es geht darum, daß ich einen wichtigen Teil gemacht habe, dieser jedoch eingebunden wird in ein größeres Projektchen.
tja, und dan ist meine Form fehl am Platz.
Danke, ich werds versuchen, und Euch noch ein paar Fragen zu stellen wensn an der Zeit ist.
Lieben Gruß
Smartie
MrFox - So 26.06.05 18:59
Kannst du das Form nicht einfach verstecken?
Smartie - Mi 29.06.05 08:08
Verstecken hört sich sehr sehr gut an *g*
Quasi, ich nutze das Form als Classe die sie ist, in welcher ich alles eingebettet habe, aber sie wird nicht gezeigt.
Klingt sehr sehr gut, nur... wie geht das?
Und wie kann mein Kollege dann meien Arbeit bei sich mit einbetten?
Herzlichst liebe Grüße und Danke
Smartie
jasocul - Mi 29.06.05 08:53
Ich bin mir nicht ganz sicher, aber schau dir mal an, ob du statt Form1.Create auch Form1.CreateNew verwenden kannst.
Außerdem gibt es noch die Möglichkeit, bei der Form Visible := false zu setzen.
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!