![]() |
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 |
Re: auf komponenten eines zweiten formulars zugreifen
Zitat:
|
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? |
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).
|
Re: auf komponenten eines zweiten formulars zugreifen
Es wäre ein grosser Fehler, wenn Form2 selbst "persönlich" auf Form1 etwas zeichnet:
Delphi-Quellcode:
Jedes Formular hat seinen eigenen Verantwortungsbereich und dazu gehört, dass niemand anderes auf dem Formular herumzumalen hat.
procedure TForm2.bla(...);
begin Form1.Image1.Canvas.TextOut(...xyz...); end; Aber Form2 kann das Zeichnen an Form1 delegieren:
Delphi-Quellcode:
Das hat folgende Vorteile:
procedure TForm2.bla(...);
begin Form1.ZeichneRechteckMitBeschriftung(...xyz...); end; 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. |
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