AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

JvEmbedddedFormPanel

Ein Thema von waldforest · begonnen am 16. Apr 2014 · letzter Beitrag vom 17. Apr 2014
Antwort Antwort
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

JvEmbedddedFormPanel

  Alt 16. Apr 2014, 14:01
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
mfg wf

Geändert von waldforest (16. Apr 2014 um 14:07 Uhr)
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#2

AW: JvEmbedddedFormPanel

  Alt 16. Apr 2014, 15:10
Das ist eine schöne Komponente von den Jedis, wenn Deine Delphi-Version Frames zur Verfügung stellt, solltest Du unbedingt diese nehmen.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: JvEmbedddedFormPanel

  Alt 16. Apr 2014, 16:48
Delphi-Referenz durchsuchenTForm.OnShow wird gefeuert, wenn Delphi-Referenz durchsuchenTForm.Visible sich auf True ändert (muss also vorher False gewesen sein).
Delphi-Referenz durchsuchenTForm.OnActivate wird gefeuert, wenn die Form den Focus erhält und vorher den Focus nicht hatte.

Weder das eine noch das andere kann ich aus deinem Code herauslesen.

Geschickter wäre es mit Delphi-Referenz durchsuchenTApplicationEvents.OnIdle zu arbeiten.
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: JvEmbedddedFormPanel

  Alt 16. Apr 2014, 19:34
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:
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;
Das mit den TApplicationEvents.OnIdle habe ich noch nicht verstanden.

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 ?
mfg wf

Geändert von waldforest (16. Apr 2014 um 19:37 Uhr)
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#5

AW: JvEmbedddedFormPanel

  Alt 16. Apr 2014, 19:58
Zitat:
Ich nutze aktuell XE3. Gibt es irgendwo hierzu eine Demo ?
Ist dies wirklich eine Alternative, mit welchen Vorteilen ?
Demo kenne ich nicht, wird sich aber bestimmt finden lassen.
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.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: JvEmbedddedFormPanel

  Alt 17. Apr 2014, 19:24
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
mfg wf

Geändert von waldforest (17. Apr 2014 um 19:40 Uhr)
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#7

AW: JvEmbedddedFormPanel

  Alt 17. Apr 2014, 20:27
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:
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure AfterConstruction; override;
procedure BeforeDestruction; override;
Mit "CMSHowingChanged" meinst Du diesen Link, könnte auch gehen.
http://www.delphipraxis.net/1147462-post6.html
Achtung: Bin kein Informatiker sondern komme vom Bau.

Geändert von Jens01 (17. Apr 2014 um 20:40 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz