AGB  ·  Datenschutz  ·  Impressum  







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

Interagieren mit mehreren Forms

Ein Thema von ratmalwer · begonnen am 30. Nov 2020 · letzter Beitrag vom 1. Dez 2020
Antwort Antwort
ratmalwer

Registriert seit: 30. Nov 2020
15 Beiträge
 
#1

Interagieren mit mehreren Forms

  Alt 30. Nov 2020, 22:40
Delphi-Version: 2010
Hallo

ich habe eine Form (Form1) mit einem Stringgrid.
Daneben eine Form (Form9) welche mit dem Stringrid von Form1 interagiert z.b:
Code:
Form9.FotoAnzeigen(fileliste[Form1.stringGrid1.row].Quellpfadfilename);
Jetzt möchte ich eine neue Form (Form2) erstellen, welche dann auch mit Form9 interagiert.
Dann möchte ich variabel switchen können zwischen Form1.StringGrid1 und Form2.StringGrid1.

Ungefähr so:
Code:
if form1.active then  FormX:=Findcomponent('Form1') end;  
if form2.active then  FormX:=Findcomponent('Form2') end;  
Form9.FotoAnzeigen(fileliste[FormX.stringGrid1.row].Quellpfadfilename);
Gibt es eine Möglichkeit dies dynamisch bei Form9.open zu machen? Und was wäre der richtige Befehl.
Danke für einen Tipp.

Markus
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Interagieren mit mehreren Forms

  Alt 1. Dez 2020, 06:56
Hallo,
benutze ein lokale StringGrid-Variable, die entweder auf das StringGrid in Form1 oder Form2 zeigt.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Interagieren mit mehreren Forms

  Alt 1. Dez 2020, 10:35
FindComponent ist eine Methode (keine Funktion) und über xxx.FindComponent kannst du sagen, wo rauf die Komponente (z.B. dein Grid auf welcher Form) gesucht werden soll.

Und Benutze bitte "verständliche" Bezeichner,
oder kannst du ohne lange drüber nachzudenken und nachzugucken sagen was Form 1 bis 9 sind/machen?

Nur zur Sicherheit:
Form1 und Form9 sind unterschiedlich und sehen nicht zufällig gleich aus, machen das Selbe,
und sollen nur "doppelt" gleichzeitig angezeigt werden?
$2B or not $2B
  Mit Zitat antworten Zitat
ratmalwer

Registriert seit: 30. Nov 2020
15 Beiträge
 
#4

AW: Interagieren mit mehreren Forms

  Alt 1. Dez 2020, 17:51
Hallo Hoika

ja, ich glaube das ist der Weg.
Jedoch brauche ich wohl zuerst den Pointer auf die Form. Und dort enden meine Kenntnisse:

Code:
var
FormX : Tform;

on show

FormX := Form1;  // wie mache ich hier den Pointer?
oder
FormX := Form2;  // wie mache ich hier den Pointer?
Vielleicht gibts ja einen Weg, das sendende Form abzufragen.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Interagieren mit mehreren Forms

  Alt 1. Dez 2020, 18:03
Hallo,
nix mit FormX.
Du übergibst doch Form9 nur ein StringGrid.
Heiko
  Mit Zitat antworten Zitat
ratmalwer

Registriert seit: 30. Nov 2020
15 Beiträge
 
#6

AW: Interagieren mit mehreren Forms

  Alt 1. Dez 2020, 18:47
ja aber wahlweise von Form1 oder Form2 (den Namen: Stringrid1 könnte ich ja gleich für beide verwenden, da ich die Struktur gleichhalte)
  Mit Zitat antworten Zitat
ratmalwer

Registriert seit: 30. Nov 2020
15 Beiträge
 
#7

AW: Interagieren mit mehreren Forms

  Alt 1. Dez 2020, 19:27
Nachtrag:
vielleich ist es doch nicht klar, was ich will.

Ich habe eine Form:Fotoanzeige (Form9) welche ein Stringgrid abarbeitet welches sich in Form:Hauptfenster (form1) befindet. Funktionen wie: vor, zurück, markieren etc. können so ausgeführt werden.

Jetzt möchte ich diese Anzeige mit den gleichen Funktionen benutzen um ein anderes Stringgrid mit gleicher Struktur abzuarbeiten, welches in einem anderen Form:Fotoselektion (Form2) ist, ohne den ganzen Code 2x redundant zu schreiben.

Also möchte ich nur die Form von Form1 auf Form2 switchen können und so das andere Stringgrid anzusprechen. Das Stringgrid kann oder soll sogar gleich heissen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: Interagieren mit mehreren Forms

  Alt 1. Dez 2020, 19:29
Zitat:
// wie mache ich hier den Pointer?
Garnicht. (Objekte sind bereits Pointer)
Aber für die Variable brauchst natürlich einen Typ, den beide Forms als Vorfahren haben.
z.B. TForm

Oder man nimmt einen eigenen Vorfahren (von TForm abgeleitet) für Variable und die Forms.
Dort kann man dann auch das Grid (die Variable des Grids), oder eine Funktion auf das Grid, reintun
und dann kann man ohne Cast oder FindComponent auf Grid zugreifen.

Oder man fügt ein Interface in die Forms ein, für den Zugriff auf das Grid, und FormX wird dann vom Typ dieses Interfaces. (Delphi-Referenz durchsuchenSupports)
$2B or not $2B
  Mit Zitat antworten Zitat
ratmalwer

Registriert seit: 30. Nov 2020
15 Beiträge
 
#9

AW: Interagieren mit mehreren Forms

  Alt 1. Dez 2020, 19:44
Danke himitsu

verbal habe ich es verstanden.
Ob ichs umsetzen kann ohne ein Codeschnipsel weiss ich noch nicht.
  Mit Zitat antworten Zitat
ratmalwer

Registriert seit: 30. Nov 2020
15 Beiträge
 
#10

AW: Interagieren mit mehreren Forms

  Alt 1. Dez 2020, 20:43
Nochmals Danke hoika und himitsu

Ihr hattet beide recht... Grosse Probleme können eine einfache Lösung haben.

Code:
SGX : TstringGrid;

wahlwweie
 sgX  := Form1.StringGrid1;
 sgX  := Form2.StringGrid1;

dann einfach abfragen nach
sgX.Row
  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 18:15 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