![]() |
JvEmbedddedFormPanel
Hallo,
hat jemand intensivere Erfahrungen im Bereich jvEmbeededFormPanal ? Ich möchte gerne, ähnlich wie in Outlook meine einzelnen Forms in einem festen Bereich abbilden. Aktuell gehe ich wie folgt vor Ich habe ein Form, welches ich über EmbeddedFormPanal einbinde, z.B. Kundenbeabeitung. In diesem werden die erforderlichen Tabelle im OnShow geöffnet und im OnClose geschlossen. Ich möchte auf diese Weise sicher stellen, dass immer die aktuellen Daten von der Netzweranwendung (Firebirddatenbank) zur Verfügung gestellt werden. Soweit so gut. Mir ist aber aufgefallen, dass im Embedded das Ereignis OnShow nur beim ersten Aufruf aufgerufen wird. Was mach ich falsch, bzw. muss ich berücksichtigen Mein Embeddedaufruf erfogt wie folgt.
Delphi-Quellcode:
procedure TLutrade.Form_Change(link : TJvEmbeddedFormlink);
begin IF jvmbdfrmpnl_Main.FormLink.Name <> link.Name then begin jvmbdfrmpnl_Main.FormLink := link; // jvmbdfrmpnl_Main.LinkedForm.show end end; procedure TLutrade.act_KundenExecute(Sender: TObject); begin Form_Change(F_Kunde.Kunden.jvmbdfrmlnk_Kunden); end; Warum wird weder das OnShow, noch OnActivate-Ereignis beim erneuten Aufruf aufgerufen? wie kann ich dies veranlassen ? Ein Aufruf über jvmbdfrmpnl_Main.LinkedForm.show bringt keine Verbesserung |
AW: JvEmbedddedFormPanel
Das ist eine schöne Komponente von den Jedis, wenn Deine Delphi-Version Frames zur Verfügung stellt, solltest Du unbedingt diese nehmen.
|
AW: JvEmbedddedFormPanel
![]() ![]() ![]() Weder das eine noch das andere kann ich aus deinem Code herauslesen. Geschickter wäre es mit ![]() Wenn dieses Event kommt und die Form sichtbar ist, dann prüft man, welchen aktuellen Status die Anzeige darstellt. Ist es nicht der aktuelle Status, dann die Daten aktualisieren und den Status merken, ansonsten ist ja alles schick. Der Status kann eine einfache Integer-Zahl sein, die bei jeder Änderung einfach hochgezählt wird. |
AW: JvEmbedddedFormPanel
Hallo,
vielen Dank, mit hilfe der Hinweis bin ich einen Schritt weiter gekommen. Zuerst einmal habe ich im OnShow das in den Jedibeispilen OnShow := NIL gelöscht. Ferner meinen Formchange wie folgt angepasst.
Delphi-Quellcode:
Das mit den TApplicationEvents.OnIdle habe ich noch nicht verstanden.
procedure TLutrade.Form_Change(link : TJvEmbeddedFormlink);
begin IF jvmbdfrmpnl_Main.FormLink.Name <> link.Name then begin jvmbdfrmpnl_Main.LinkedForm.Visible := False; jvmbdfrmpnl_Main.LinkedForm.Close; jvmbdfrmpnl_Main.FormLink := link; end; end; Gerne würde ich den Hinweis zu den Frames noch einmal aufgreifen. Ich habe diesbezüglich bisher keine Erfahrung. Ich nutze aktuell XE3. Gibt es irgendwo hierzu eine Demo ? Ist dies wirklich eine Alternative, mit welchen Vorteilen ? |
AW: JvEmbedddedFormPanel
Zitat:
Eigentlich ist dies Ding von den Jedis keine Alternative. Ich glaube -obgleich die Jedi Sachen wirklich gut sind- das ist irgendwas veraltetes und lohnt sich auf jeden Fall nicht, wenn man Frames nutzen kann. Frames kann man schön ableiten und frei auf Forms, Panels o.ä. draufpappen. |
AW: JvEmbedddedFormPanel
Hallo,
ich habe mich etwas mit Frames beschäftigt, scheint mir auf den ersten Blick eine Alternative zu den Jedi-EmbeddedForm zu sein. Allerdings ergeben sich bei mir aktuell 2 Fragen. Ich finde kein OnShow, OnCreate, OnClose mehr, da ich beim Aufruf z.B. des KundenFrames die erforderlichen Tabellen aus einem Dataset öffne, bzw. beim verlassen schließene möchte. Muss ich ggf. (habe ich hier gefunden, procedure CMSHowingChanged(var M: TMessage); message CM_SHOWINGCHANGED; immer im Frame erstellen ? Aktuell sicher ich mir durch Öffnen der Tabellen, die Aktualität der Querys, oder gibt es eine andere Möglichkeit ? @arbeite mit Firebird und ZEOS |
AW: JvEmbedddedFormPanel
Also das Create/ Destroy benutzt Du von TFrame. Du überschreibst das einfach (inherited nicht vergessen).
Für einige Sachen, die ich vor dem Öffnen einstellen will, habe ich mit das AfterConstruction überschrieben. Mit dem BeforeDestruction müßte das beim Beenden auch gehen. Ansonsten mußt Du das OnShow usw, des Fensters nutzen, wo Du das Frame rauspappst.
Delphi-Quellcode:
Mit "CMSHowingChanged" meinst Du diesen Link, könnte auch gehen.
constructor Create(AOwner: TComponent); override;
destructor Destroy; override; procedure AfterConstruction; override; procedure BeforeDestruction; override; ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz