Arbeiten mit Formen zur Laufzeit erstellt
-
- Beiträge: 104
- Registriert: Mi 2. Jun 2010, 17:56
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Arbeiten mit Formen zur Laufzeit erstellt
Hallo an alle, einen schönen Guten Morgen.
Ich hoffe dass Ihr alle ein schönes Osterfest hattet.
Vor kurzer Zeit hatte ich das Problem, wie man Formen zur Laufzeit herstellt.
Dank Eurer Hilfe habe ich das dann auch in den Griff bekommen (fast).
Ich kann jetzt beliebig viele Formen auf einem Hauptformular erstellen.
Wie das aussieht habe ich mal in einer Grafik im Anhang abgestellt.
Da ich aber nach der Erstellung auch mit den Formularen arbeiten möchte (ändern, löschen, u.s.w.),
habe ich bei der Erstellung jeder Form ein Memo verpasst wo ich was reinschreiben kann und dem
Memo und auch der neu erstellten Form eine OnClick-Ereignis-Routine hinzugefügt, um dann reagieren zu können.
Das funktioniert zwar soweit ganz gut, die Routinen werden bei so einem Ereignis auch aufgerufen,
aber leider kann ich nicht abfragen, in welcher Form oder in welchem Memo das Ereignis statt gefunden hat.
Wenn ich z.B. den Form.Namen abfrage, dann bekomme ich immer den Namen der zuletzt erstellten Form,
auch wenn ich eine bereits bestehende Form anklicke.
Kann mir jemand sagen, was ich da falsch mache, oder geht das vielleicht gar nicht mit Lazarus?
Mit freundlichen Grüßen Hercules.
Und eine schönen Tag noch.
Ich hoffe dass Ihr alle ein schönes Osterfest hattet.
Vor kurzer Zeit hatte ich das Problem, wie man Formen zur Laufzeit herstellt.
Dank Eurer Hilfe habe ich das dann auch in den Griff bekommen (fast).
Ich kann jetzt beliebig viele Formen auf einem Hauptformular erstellen.
Wie das aussieht habe ich mal in einer Grafik im Anhang abgestellt.
Da ich aber nach der Erstellung auch mit den Formularen arbeiten möchte (ändern, löschen, u.s.w.),
habe ich bei der Erstellung jeder Form ein Memo verpasst wo ich was reinschreiben kann und dem
Memo und auch der neu erstellten Form eine OnClick-Ereignis-Routine hinzugefügt, um dann reagieren zu können.
Das funktioniert zwar soweit ganz gut, die Routinen werden bei so einem Ereignis auch aufgerufen,
aber leider kann ich nicht abfragen, in welcher Form oder in welchem Memo das Ereignis statt gefunden hat.
Wenn ich z.B. den Form.Namen abfrage, dann bekomme ich immer den Namen der zuletzt erstellten Form,
auch wenn ich eine bereits bestehende Form anklicke.
Kann mir jemand sagen, was ich da falsch mache, oder geht das vielleicht gar nicht mit Lazarus?
Mit freundlichen Grüßen Hercules.
Und eine schönen Tag noch.
- Dateianhänge
-
- Beispiel.bmp (1.71 MiB) 2195 mal betrachtet
Re: Arbeiten mit Formen zur Laufzeit erstellt
Im OnClick-Eventhandler vom TMemo (bei dir MemoOnClick) wird der Sender mit übergeben. Damit ist auswertbar, welches Memo das Event gefeuert hat. Bsp.:
Code: Alles auswählen
procedure TForm1.MemoOnClick(Sender: TObject);
begin
if not Assigned(Sender) then Exit;
if not (Sender is TMemo) then Exit;
ShowMessage(TMemo(Sender).Name); // Name des TMemos
if not Assigned(TMemo(Sender).Parent) then Exit;
ShowMessage(TMemo(Sender).Parent.Name); // Name des Parents (in deinem Fall, der Name des Formulars)
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 104
- Registriert: Mi 2. Jun 2010, 17:56
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Arbeiten mit Formen zur Laufzeit erstellt
Hallo Michl,
ich bin begeistert. Habe Deine Lösung ausprobiert: Spitze, es funktioniert.
Das Gute dabei ist noch: Ich habe es auch kapiert.
Man lernt halt nie aus.
Vielen, vielen Dank!
Hercules.
ich bin begeistert. Habe Deine Lösung ausprobiert: Spitze, es funktioniert.
Das Gute dabei ist noch: Ich habe es auch kapiert.
Man lernt halt nie aus.
Vielen, vielen Dank!
Hercules.
-
- Beiträge: 6167
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Arbeiten mit Formen zur Laufzeit erstellt
Ich habe den Code von Hercules ausprobiert, aber so wie es scheint, gehen die MDI-Fenster nur unter Windows.
Unter Linux kommen nur farbige Rechtecke ohne Rahmen.
Starte ich es aber unter Wine, dann kommen die Fenster richtig. Aber des Design(Skin) der Fenster sieht typisch Windows aus.
Unter Linux kommen nur farbige Rechtecke ohne Rahmen.
Starte ich es aber unter Wine, dann kommen die Fenster richtig. Aber des Design(Skin) der Fenster sieht typisch Windows aus.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
form: TForm;
begin
form := TForm.Create(Self);
form.ActiveMDIChild;
form.Left := 100;
form.Top := 100;
form.Color := Random($ffffff);
form.BorderStyle := bsSizeable;
form.BorderIcons := [biSystemMenu, biMinimize, biMaximize];
// form.Menu := MainMenu1;
form.Visible := True;
form.Parent := Self;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 104
- Registriert: Mi 2. Jun 2010, 17:56
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Arbeiten mit Formen zur Laufzeit erstellt
Hallo Mathias,
ich habe schon sehr viel Hilfe in diesem Forum bekommen und würde auch gern mal helfen.
Leider hab ich mit Linux nichts am Hut. Ich werd mal meinen Sohnemann fragen, der macht mit Linux.
Ich melde mich, wenn er einen Tipp hat, ich melde mich auch wenn er keinen Tipp hat.
Wird heute allerdings nichts mehr, melde mich morgen.....
Hercules.
ich habe schon sehr viel Hilfe in diesem Forum bekommen und würde auch gern mal helfen.
Leider hab ich mit Linux nichts am Hut. Ich werd mal meinen Sohnemann fragen, der macht mit Linux.
Ich melde mich, wenn er einen Tipp hat, ich melde mich auch wenn er keinen Tipp hat.
Wird heute allerdings nichts mehr, melde mich morgen.....
Hercules.
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: Arbeiten mit Formen zur Laufzeit erstellt
Mathias hat geschrieben:Ich habe den Code von Hercules ausprobiert, aber so wie es scheint, gehen die MDI-Fenster nur unter Windows.
Da war doch was... Mal schnell in der Purebasic Hilfe zum MDI-Gadgets geschaut... Unterstützte OS: Windows
Ja, anscheinend sind MDIs eine Spezialität von Windows, die es auf anderen Systemen so nicht gibt. Unter Windows sind sie auch am Aussterben, habe ich den Eindruck.
-
- Beiträge: 6167
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Arbeiten mit Formen zur Laufzeit erstellt
Unter Windows sind sie auch am Aussterben, habe ich den Eindruck.
Unter Windows kenne ich auch keine Anwendung mehr, welche so etwas hat, eigentlich Schade, ich fand es eine gute Sache.
So viel ich weis, wurde dies mit Win 3.0 eingeführt, der Programm-Manager war ein sehr gutes Beispiel dafür.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 49
- Registriert: So 4. Jan 2015, 21:34
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Arbeiten mit Formen zur Laufzeit erstellt
Mathias hat geschrieben:Unter Windows kenne ich auch keine Anwendung mehr, welche so etwas hat
Photoshop (?)
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: Arbeiten mit Formen zur Laufzeit erstellt
Mathias hat geschrieben:Unter Windows kenne ich auch keine Anwendung mehr, welche so etwas hat...
Ich hatte mal eine geschrieben - und hab sie inzwischen auch umgestellt.
War schon praktisch, wenn man z.B. Code vergleichen wollte. Jetzt muß man immer mehrere Programminstanzen aufmachen und nebeneinanderstellen.
-
- Beiträge: 104
- Registriert: Mi 2. Jun 2010, 17:56
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Arbeiten mit Formen zur Laufzeit erstellt
Hallo Mathias,
tut mir leid, dass ich solange nichts von mir habe hören lassen, obwohl ich noch versprochen habe, mich am nächsten Tag zu melden.
Leider haben wir (Sohnemann und ich ) mit Linux die gleichen Schwierigkeiten wie Du, wenn er meine Routine unter Linux verwenden will.
Bei uns sind alle Rechtecke weiß und nicht farbig. Schade, ich hätte Dir jetzt gerne etwas mehr gesagt.
Sohnemann ist von Lazarus nicht mehr so begeistert, ich konnte ihn deshalb nicht weiter löchern und ich selbst habe mit Linux nichts weiter zu tun.
Sohnemann schwört auf Linux.
Mach's erst mal Gut.....
Hercules.
tut mir leid, dass ich solange nichts von mir habe hören lassen, obwohl ich noch versprochen habe, mich am nächsten Tag zu melden.
Leider haben wir (Sohnemann und ich ) mit Linux die gleichen Schwierigkeiten wie Du, wenn er meine Routine unter Linux verwenden will.
Bei uns sind alle Rechtecke weiß und nicht farbig. Schade, ich hätte Dir jetzt gerne etwas mehr gesagt.
Sohnemann ist von Lazarus nicht mehr so begeistert, ich konnte ihn deshalb nicht weiter löchern und ich selbst habe mit Linux nichts weiter zu tun.
Sohnemann schwört auf Linux.
Mach's erst mal Gut.....
Hercules.
-
- Beiträge: 6167
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Arbeiten mit Formen zur Laufzeit erstellt
Wen man nach Linux und MDI googelt, kommt nichts gescheites, somit ist dies keine übliche Sache.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot