![]() |
Checkboxen um funktionen zu bauen
Hallo,
ich habe eine ziemlich große Anzahl an checkboxen (80x80) die alle untereinander zusammenhängen. Jetzt habe ich ziemlich wenig lust über 6000 abfragen zu machen ob checkbox-X gechecked ist. Habe ich eine andere Möglichkeit die information in eine variable(boolean) zu bekommen als immer per if? Leider will mir nichts in den Kopf kommen wie ich es anstellen könnte. Derzeit sieht es leider so bei mir aus. Nur zum veranschaulichen das ich über 6000 Funktionen schreiben müsste mit mehreren 1000 .show / .hide für die Checkboxen.
Delphi-Quellcode:
function func11 () : String; begin form1.CheckBox1.Show; Form1.CheckBox2.Show; form1.CheckBox3.Show; Form1.CheckBox4.Show; Form1.CheckBox5.Show; Form1.CheckBox6.Show; Form1.CheckBox7.Show; Form1.CheckBox8.Show; form1.CheckBoxa1.Show; Form1.CheckBoxa2.Show; form1.CheckBoxa3.Show; Form1.CheckBoxa4.Show; Form1.CheckBoxa5.Show; Form1.CheckBoxa6.Show; Form1.CheckBoxa7.Show; Form1.CheckBoxa8.Show; form1.Label2.Caption := 'XXX'; end; procedure TForm2.Button1Click(Sender: TObject); begin HidetheBoxes; if CheckBox1.Checked then begin func1; end; if CheckBox2.Checked then begin func2; end; if CheckBox3.Checked then begin func3; end; if CheckBox4.Checked then begin func4; end; if CheckBox5.Checked then begin func5; end; if CheckBox6.Checked then begin func6; end; if CheckBox7.Checked then begin func7; end; if CheckBox8.Checked then begin func8; end; if CheckBox9.Checked then begin func9; end; if CheckBox10.Checked then begin func10; end; if CheckBox11.Checked then begin func11; end; form2.hide; form1.Button1.Enabled := true; end; |
AW: Checkboxen um funktionen zu bauen
Soll immer nur eine der zur Auswahl stehenden Funktionen ausgeführt werden? In dem Fall würde ich die Checkboxen in die Wüste schicken und eine geeignetere Komponente wählen wie z.B. eine Radiogroup oder eine Combobox.
|
AW: Checkboxen um funktionen zu bauen
Du könntest die TAG Eigenschaft nutzen, um die Checkbox rauszukriegen, welche geklickt wurde.
Aber ich schließe mich auch meinem Vorgänger an, ein geeigneteres Objekt zu suchen, um dein Problem zu lösen. Vielleicht erklärst du dein Problem mal detaillierter. |
AW: Checkboxen um funktionen zu bauen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
leider kann ich nicht nur eine auswählen sondern wirklich jede checkbox mit jeder anderen verbinden um dann die entsprechende functionen zu kombinieren. wenn cbE1 und cbA1 checked dann ..... wenn cbE1 und cbA1 und cbA2,cbA3,cbA4,5,6 etc.... dann ..... also es sind wirklich 6400 abfragen weil ich alle untereinander kombinieren kann um einen entsprechenden code nachher aus der kombination zu generieren. Radio geht hier leider nicht. :( hier mal als Bild erklärt Anhang 39097 |
AW: Checkboxen um funktionen zu bauen
So ganz habe ich es immer noch nicht begriffen. Du hast je Checkbox eine aufzurufende Routine, gehst dann die Checkboxen durch und rufst sofern Checked die zugewiesene Routine auf, stimmt das?
[edit] Oder sollen gewisse Routinen bei bestimmten Kombinationen der Checkboxen aufgerufen werden? [/edit] |
AW: Checkboxen um funktionen zu bauen
Sind die Funktionen denn irgendwie auf Spalten bzw. Zeilen reproduzierbar, d.h. wenn in einer Zeile was geklickt wird, dann in derselben Zeile etwas machen oder?
|
AW: Checkboxen um funktionen zu bauen
Also handelt es sich hier um eine 80*80 Schaltmatrix.
Etwa so wie: ![]()
Delphi-Quellcode:
Checkboxen sind dafür ziemlich ungeeignet weil bei 6400 Checkboxen ist Windows (32bit) resourcenmäßig schon recht Nahe an der Obergrenze von 10000 GDI-Handles.
type
TSchaltMatrix = array[1..80, 1..80] of Boolean; Naheliegend wäre hier ein DrawGrid mit 80*80 Feldern. Bei einem Click in ein Feld wird einfach das entsprechende Element in dem Schaltmatrix Array umgekippt. Das hat enorme Vorteile: * beliebig skalierbar; Die Zellen des Drawgrids können je nach Wunsch dimensioniert werden * direkter Zugriff auf die Daten ohne endlose If-Abfragen * Resourcensparend * wenig Sourcecode |
AW: Checkboxen um funktionen zu bauen
Jede Checkbox kann einzeln eine Routine beinhalten aber auch mit anderen routinen interagieren. Das ganze ist ein routing von ein und ausgehenden Signalen.
Beispiel wenn ich (bild vom vorherigen Post): checkbox 1-1 klicke wird eingang 1 auf ausgang 1 geroutet aber gleichzeitig kann ich 1-2, 1-3 etc. mit routen. Um es noch besser zu machen geht auch multiples routen wie beispiel: 1-1 , 1-2, 1-3, 2-4, 2-5, 3-6, etc. Eingänge können mehrere Ausgänge simultan beinhalten, jedoch ein Ausgang immer nur einen Eingang. @ Zeras: Man kann es reduzieren , das ich den Eingang 2 nicht mehr auf den Ausgang 2 Routen kann wenn dieser bereits von Eingang 1 benutzt wird. Gleiche gillt für alle anderen Eingänge, entsprechend würde ich diese disablen. @ sx2008: so etwas in der Art ist es. Mein Problem ich hab 0,0 Ahnung von Drawgrids :D viel lesen wieder und euch im Forum mit dummen Fragen belästigen. Werde mir mal einen kleinen Aufbau machen mit 8x8 und gucken wie ich es hinbekomme. Danke ;) |
AW: Checkboxen um funktionen zu bauen
Liste der Anhänge anzeigen (Anzahl: 1)
Mach doch einfach ein Grid und werte die Klicks aus:
|
AW: Checkboxen um funktionen zu bauen
Zitat:
![]() Gezeigt wird ein 8*8 Schachbrett mit Beschriftung. Bei jedem Doppelklick wird eine neue Figur gesetzt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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