Arbeiten mit Formen zur Laufzeit erstellt

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.

Arbeiten mit Formen zur Laufzeit erstellt

Beitragvon Hercules » 30. Mär 2016, 07:33 Arbeiten mit Formen zur Laufzeit erstellt

Hallo an alle, einen schönen Guten Morgen.

Ich hoffe dass Ihr alle ein schönes Osterfest hattet. :D
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. :oops:
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. :D
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Hercules
 
Beiträge: 101
Registriert: 2. Jun 2010, 16:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon Michl » 30. Mär 2016, 10:04 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; 
Michl
 
Beiträge: 2168
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon Hercules » 30. Mär 2016, 10:31 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. :D
Man lernt halt nie aus.
Vielen, vielen Dank!
Hercules.
Hercules
 
Beiträge: 101
Registriert: 2. Jun 2010, 16:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon Mathias » 30. Mär 2016, 16:23 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.

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 gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3024
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Hercules » 30. Mär 2016, 19:12 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.
Hercules
 
Beiträge: 101
Registriert: 2. Jun 2010, 16:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon Timm Thaler » 30. Mär 2016, 20:28 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.
Timm Thaler
 
Beiträge: 342
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.6 FPC3.0.0, Raspbian Jessie Laz1.6 FPC3.0.0 | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Mathias » 30. Mär 2016, 21:51 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 gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3024
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon SchwabenTom » 30. Mär 2016, 23:31 Re: Arbeiten mit Formen zur Laufzeit erstellt

Mathias hat geschrieben:Unter Windows kenne ich auch keine Anwendung mehr, welche so etwas hat


Photoshop (?)
SchwabenTom
 
Beiträge: 44
Registriert: 4. Jan 2015, 21:34

Beitragvon Timm Thaler » 31. Mär 2016, 23:25 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.
Timm Thaler
 
Beiträge: 342
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.6 FPC3.0.0, Raspbian Jessie Laz1.6 FPC3.0.0 | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Hercules » 5. Apr 2016, 13:36 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. :(
Hercules
 
Beiträge: 101
Registriert: 2. Jun 2010, 16:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon Mathias » 5. Apr 2016, 16:56 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 gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3024
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Programmierung



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried