Arbeiten mit zwei Formularen

Rund um die LCL und andere Komponenten
Antworten
mansch
Beiträge: 13
Registriert: Fr 11. Jun 2010, 17:19

Arbeiten mit zwei Formularen

Beitrag von mansch »

Hallo,
ich brauche Hilfe für ein Problem, bei dem ich nicht durchblicke.

In einem Formular verwalte ich eine Datenbanktabelle. Dabei wird jeweils ein Datensatz angezeigt. Für die Suche verwende ich ein zweites Formular, das ich mit Form2Show starte und das dann ständig geöffnet bleibt. Wurde ein Ergebnis in der gesamten Tabelle gefunden, setze ich im ersten Formular den Datenbankzeiger auf den entsprechenden Datensatz und das Formular zeigt es auch an. Bis hierher klappt es also wunderbar. Auch eine zweite Suche klappt.

Komme ich jedoch auf die Idee in das Hauptfenster zu klicken, so dass es den Fokus bekommt, bewegt sich der Datenbankzeiger wie von Geisterhand auf den Datensatz, der vor dem Suchfenster eingestellt war.

Kann mir das jemand erklären. Wo habe ich die Wissenslücke? Was mache ich falsch?
Danke für jede Hilfe

Manfred

charlytango
Beiträge: 192
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz 2.0fixes FPC 3.2fixes
CPU-Target: Win 32Bit, 64bit
Wohnort: Wien

Re: Arbeiten mit zwei Formularen

Beitrag von charlytango »

mansch hat geschrieben:Hallo,
In einem Formular verwalte ich eine Datenbanktabelle. Dabei wird jeweils ein Datensatz angezeigt. Für die Suche verwende ich ein zweites Formular, das ich mit Form2Show starte und das dann ständig geöffnet bleibt. Wurde ein Ergebnis in der gesamten Tabelle gefunden, setze ich im ersten Formular den Datenbankzeiger auf den entsprechenden Datensatz und das Formular zeigt es auch an. Bis hierher klappt es also wunderbar. Auch eine zweite Suche klappt.

Komme ich jedoch auf die Idee in das Hauptfenster zu klicken, so dass es den Fokus bekommt, bewegt sich der Datenbankzeiger wie von Geisterhand auf den Datensatz, der vor dem Suchfenster eingestellt war.


Hi,
um eine qualifizierte Antwort geben zu können fehlen einige Informationen. Evtl auch ein Stück Code der die Sachlage darstellet.

    Welche Datenbank verwendest du? (SQL oder Flatfile? Das sagt einiges über die nötige Art der Handhabung)

    Wie wird der erste Datensatz im ersten Formular angezeigt? (überlässt du das den DB-Komponenten oder machst du das irgendwie selbst ?)

    In welchem Event des ersten Formulars passiert das Anzeigen des ersten Datensatzes?

    Verwendest du im ersten und zweiten Formular je einen eigenen Datenbankzugang oder benutzt du ein Datenmodul?

Leider gibt es etliche Möglichkeiten wie man so etwas designen kann, daher ist eine "einfache" Antwort kaum möglich. In jedem Fall braucht es mehr Infos

LG

MacWomble
Lazarusforum e. V.
Beiträge: 977
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 19.3 Cinnamon / FPC/Lazarus
CPU-Target: Intel i7 64/32 Bit
Wohnort: Freiburg

Re: Arbeiten mit zwei Formularen

Beitrag von MacWomble »

Ich würde hier einfach tiOPF verwenden - im Speziellen den Mediator.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

wp_xyz
Beiträge: 3252
Registriert: Fr 8. Apr 2011, 09:01

Re: Arbeiten mit zwei Formularen

Beitrag von wp_xyz »

mansch hat geschrieben:Kann mir das jemand erklären. Wo habe ich die Wissenslücke? Was mache ich falsch?

Keine Ahnung, wie soll ich das wissen? Solche Sachen können ein Fehler der Komponente sein, ein Fehler von dir, oder etwas ganz anderes. Ohne zusätzliche Information kann dir niemand helfen, es sei denn er hat gerade den richtigen Riecher. Bitte schreibe ein kleines Demo-Projekt, das das beschriebene Verhalten zeigt, und lade es hoch (nur .pas, .lfm, .lpr und .lpi-Dateien, und die Datenbank-Datei, alles in ein gemeinsames zip gepackt, und statt einen super-tollen Datenbank-Server zu verwenden solltest du etwas gängiges nehmen, wie dbf, bufdataset, sqlite3 etc, denn ich werde mir garantiert nicht eine Oracle-Demo installieren, um dir zu helfen...). Wenn der Fehler bei dir liegt, ist die Wahrscheinlichkeit, dass du den fehler selbst findest, relativ groß, denn du musst dich bei dem Demo-Projekt auf das wesentliche konzentrieren.

Antworten