Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Checkboxen um funktionen zu bauen (https://www.delphipraxis.net/174531-checkboxen-um-funktionen-zu-bauen.html)

MondoShiva 27. Apr 2013 10:57

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;

DeddyH 27. Apr 2013 11:08

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.

zeras 27. Apr 2013 11:18

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.

MondoShiva 27. Apr 2013 11:54

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

DeddyH 27. Apr 2013 12:09

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]

zeras 27. Apr 2013 12:09

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?

sx2008 27. Apr 2013 12:20

AW: Checkboxen um funktionen zu bauen
 
Also handelt es sich hier um eine 80*80 Schaltmatrix.
Etwa so wie: http://www.sequencer.de/forumsynth/m...ti_matrix6.jpg

Delphi-Quellcode:
type
  TSchaltMatrix = array[1..80, 1..80] of Boolean;
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.

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

MondoShiva 27. Apr 2013 12:26

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 ;)

hathor 27. Apr 2013 12:34

AW: Checkboxen um funktionen zu bauen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mach doch einfach ein Grid und werte die Klicks aus:

sx2008 27. Apr 2013 12:41

AW: Checkboxen um funktionen zu bauen
 
Zitat:

Zitat von MondoShiva (Beitrag 1213144)
Mein Problem ich hab 0,0 Ahnung von Drawgrids

Du kannst dir aus diesem Test-Projekt ( https://github.com/sx2008/Delphi-Tes...er/Schachbrett ) Anregungen holen.
Gezeigt wird ein 8*8 Schachbrett mit Beschriftung.
Bei jedem Doppelklick wird eine neue Figur gesetzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 Uhr.
Seite 1 von 2  1 2      

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