Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi auf komponenten eines zweiten formulars zugreifen (https://www.delphipraxis.net/148320-auf-komponenten-eines-zweiten-formulars-zugreifen.html)

Spanky_Ham 28. Feb 2010 15:18

Re: auf komponenten eines zweiten formulars zugreifen
 
gezeichnet soll später auch noch werden. wenn jedoch TextOut kein ergebnis bringt, werden es andere funktionen auch nicht tun.
kann mir evtl jemand eine anleitung geben, wie genau man vorgehen muss um eine zweite form richtig einzubinden und auf diese zugreifen zu können?


edit : mit einer paintbox funzt es auch nicht

DeddyH 28. Feb 2010 15:23

Re: auf komponenten eines zweiten formulars zugreifen
 
Zitat:

Zitat von DeddyH
... und zeichne in deren OnPaint-Ereignis, dann sollte das auch klappen.

Es sollte auch mit Invalidate, Refresh oder Repaint nach dem Zeichnen gehen, aber das nur solange, bis das Image neu gezeichnet werden muss, weil z.B. ein anderes Fenster drüber lag.

Luckie 28. Feb 2010 15:29

Re: auf komponenten eines zweiten formulars zugreifen
 
Nimm den Code erst mal aus dem OnKlick-Ereignis der Schaltfläche raus und mach aus ihm eine öffentliche Methode des zweiten Formulares. Diese kannst du dann auch aus dem ersten Formular raus aufrufen. Dann hast du im ersten Formular auch einen aussagekräftigen Methodenaufruf.

Was den Rest angeht, warum es nicht funktioniert, kann man ohne Code nicht sagen. Woher sollen wir wissen, wie dein Code aussieht und was du falsch machst?

DeddyH 28. Feb 2010 15:54

Re: auf komponenten eines zweiten formulars zugreifen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Man könnte es auch über eine Property lösen (siehe Anhang).

sx2008 28. Feb 2010 17:10

Re: auf komponenten eines zweiten formulars zugreifen
 
Es wäre ein grosser Fehler, wenn Form2 selbst "persönlich" auf Form1 etwas zeichnet:
Delphi-Quellcode:
procedure TForm2.bla(...);
begin
  Form1.Image1.Canvas.TextOut(...xyz...);
end;
Jedes Formular hat seinen eigenen Verantwortungsbereich und dazu gehört, dass niemand anderes auf dem Formular herumzumalen hat.
Aber Form2 kann das Zeichnen an Form1 delegieren:
Delphi-Quellcode:
procedure TForm2.bla(...);
begin
  Form1.ZeichneRechteckMitBeschriftung(...xyz...);
end;
Das hat folgende Vorteile:
1.) Form1 kann jederzeit geändert werden (z.B. Umbenennung von Komponenten, Austausch von Image1 durch eine Paintbox oder wasauchimmer)
2.) verringerte Abhängigkeiten
3.) es wird expliziert gemacht, was der Code eigentlich tun soll
4.) verbesserte Testbarkeit. Man kann einfach einen Testbutton auf Form1 legen und die Methode
ZeichneRechteckMitBeschriftung() aufrufen. Dann der Code so lange verbessern, bis alles wie gewünscht funktioniert.
Danach dürfte es keine Probleme mehr geben, wenn diese Methode von einem anderen Formular aufgerufen wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz