Autor Beitrag
walsumer
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 06.02.15 20:31 
Hallo Scripter,

ein kleines Problem für einen der es kann aber ein großes für ein newbie wie mich :)

Folgende Herausforderung:

ich möchte eine Checkbox in der Mainform von einer zweiten Form aus über eine Checkbox aktivieren.
Mein erster Versuch die checkbox als public static void zu deklarieren funkt leider nicht:)
Was ich hinbekommen habe ist ein Umweg über bool get/set welcher über ein timer in der Mainform abgefangen wird was aber ein totaler workaround ist und nicht wirklich das ist was ich möchte.
Wie kann ich es besser machen? und warum kann ich die Checkbox nicht als public static deklarieren?

Danke und Gruß
Walsumer
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 06.02.15 20:41 
Zitat:
und warum kann ich die Checkbox nicht als public static deklarieren?


Weil es keinen Sinn macht. Die gleiche Form kann man beliebig oft erzeugen und anzeigen nicht nur 1 mal. Welche von den potentiell angezeigten Formen soll den dann gemeint sein wenn irgendwas statisch wäre? Etwa alle? Nein wenn ein a etwas an einem b ändern will muss dieses a das konkrete b kennen. Also braucht deine 2.te Form eine Referenz auf die konkrete Mainform die auch angezeigt wurde.

Der von TH69 immer wieder gern (zurecht) verlinkte Artikel zum Thema.
walsumer Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 06.02.15 22:17 
Danke Ralf für die schnelle Antwort,

Wie würde so eine Referenz auf die Checkbox der Mainform aussehen hast Du ein kleines Beispiel?
Wobei ich erzeuge beide Formen nur ein einziges mal schließe auch keine der Formen etwa mit close nein ich ändere jeweils im wechsel nur die Sichtbarkeit mit hide weil ich immer die Main form im Hintergrund ansprechen möchte da diese unter anderem auf KeyPress-Hook und andere Befehle reagieren sollte und zusätzlich Werte in ein Listview eintragen muss.

Danke und Gruß
Walsumer
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 06.02.15 23:16 
Darum hab ich den Artikel verlinkt. Es steht genau beschrieben darin. Lies insbesondere ab 'Typische Anfängerfehler'.

Und nachdem du das gelesen hast sei noch gesagt ein wichtiges Prinzip ist das Geheimnisprinzip. Klassen (also auch Formen) sollen nur das absolut Notwendigste veröffentlichen. Heißt hier veröffentliche an der Mainform nur eine Methode/Property etc. die genau nur das tut was du brauchst und nicht mehr. Wenn jemand anderes die CheckBox kennen würde könnte er auch alles andere mit der Checkbox tun (Text ändern etc.). Also der 2.ten Form eine Methode geben über die man die MainForm übergeben kann (steht wie gesagt in dem Artikel) und der Mainform eine Methode geben damit die 2.te Form darüber den CheckBox Zustand ändern kann.
DarkStaRX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28
Erhaltene Danke: 3



BeitragVerfasst: Sa 21.02.15 17:22 
Kannst du einfach über delegate lösen.

Beispiel: rainerhilmer.wordpre...-einfaches-beispiel/

Dem delegate kann man auch Parameter mit übergeben.