Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Checkbox (https://www.delphipraxis.net/89770-checkbox.html)

stOrM 5. Apr 2007 13:20


Checkbox
 
Hallo, ich hab hoffentlich ein simples Problem, eventuell hatte jemand mal etwas ähnliches und kann mir hier einen Tip geben...

Problem ist folgendes:
Ich hab vor mir ein kleines Tools zu schreiben welches eine Art Installations Menu (komplett grafisch) darstellt.

Ich möchte für die Auswahl der zu installierenden Programme Checkboxen verwenden.
Das Problem dabei ist, ich benutze in der GUI keine Tab/PageControls oder ähnliches, jetzt frage ich mich, wenn die GUI automatisch mit Checkboxen gefüllt wird (z.B. Programme Ordner auslesen und pro Programm eine Checkbox auf die GUI) wie kann ich ein blättern (vor/zurück) erreichen, weil wenn es sehr viele Programme sind wird logischerweise Irgendwann die GUI voll sein so das ich vor/zurückblättern muss...

Eigentlich bräuchte ich in etwa so etwas:
IniFile = Programme die zur verfügung stehen + Beschreibung zu den Programmen.
Rubriken wie z.B. System, Antivirus usw.

Routine zum einlesen des IniFiles + dynamische Checkbox Erstellung.
Blätter Funktion, die durch die Sektionen der Ini wandern kann muss dann wieder dynamisch die Checkboxen auf die GUI basteln.

Ansonsten wenn jemand eine simplerer Idee hat bin offen für alles, nur kann ich eben keine Standart Komponenten benutzen da wie gesagt die Oberfläche ist kompl. geskinnt, ich möchte daherauch keine 3rd Komponenten zum Skinnen einsetzen die womöglich noch Geld kosten oder ähnliches!

Ich danke schonmal im vorraus!
s!

Nuclear-Ping 5. Apr 2007 13:24

Re: Checkbox
 
Warum verwendest du denn kein Tab-/PageControl bzw. Notebook? Anders wirst du das glaube nicht so leicht realisiert bekommen.

Edit: Ok, hab überlesen, dass du eine geskinnte Form hast.
Edit2: TNotebook (in der Palette unter Win 3.1 zu finden) könnte vlt. doch nützlich sein. Schau's dir mal an.

Luckie 5. Apr 2007 13:40

Re: Checkbox
 
Nimm einen Listview mit Checkboxen.

stOrM 5. Apr 2007 13:42

Re: Checkbox
 
Zitat:

Zitat von Nuclear-Ping
Warum verwendest du denn kein Tab-/PageControl bzw. Notebook? Anders wirst du das glaube nicht so leicht realisiert bekommen.

Edit: Ok, hab überlesen, dass du eine geskinnte Form hast.
Edit2: TNotebook (in der Palette unter Win 3.1 zu finden) könnte vlt. doch nützlich sein. Schau's dir mal an.

Hi,
Geskinnt halt, richtig.
Zu Edit2 nützt mir ja leider nichts, da ich nicht eine neue Komponente schreiben will um die Komplett transparent zu haben.

Lucky, kann ich leider vergessen, da meine Checkboxen ebenfalls geskinnt sind, die ListView leider net.

Luckie 5. Apr 2007 13:45

Re: Checkbox
 
Der Listview wird doch bestimmt von der Komponente auch geskinnt oder? Wo ist das Problem?

stOrM 5. Apr 2007 13:48

Re: Checkbox
 
Zitat:

Zitat von Luckie
Der Listview wird doch bestimmt von der Komponente auch geskinnt oder? Wo ist das Problem?

Jo Luckie das ist genau das Problem sie wird eben nicht geskinnt leider!
Ich hatte mir gedacht, daß man das in etwa machen kann wie M$ so eine Art Menu wie beim Setup von XP oder so, da gibt es ja auch ein Menu nur eben nicht mit Checkboxen dafür die grünen [->] Buttons mit MouseOver/Leave

Nuclear-Ping 5. Apr 2007 14:01

Re: Checkbox
 
Eine neue Komponente schreiben musst du nicht. "Nur" TNotebook umbiegen und selber zeichnen. ;)
Heisst eine neue Komponente erstellen und die von TNotebook ableiten.
Den OnPaint- / OnDraw-Event publizieren und dort drin halt "einfach" das Zeichnen, was hinter dem Notebook liegt. Google mal nach Transparent Panel oder such hier im Forum. Gab da schonmal so was, was halt einfach das auf sich selber gezeichnet hat, was dahinter lag.

stOrM 5. Apr 2007 14:06

Re: Checkbox
 
Zitat:

Zitat von Nuclear-Ping
Eine neue Komponente schreiben musst du nicht. "Nur" TNotebook umbiegen und selber zeichnen. ;)
Heisst eine neue Komponente erstellen und die von TNotebook ableiten.
Den OnPaint- / OnDraw-Event publizieren und dort drin halt "einfach" das Zeichnen, was hinter dem Notebook liegt. Google mal nach Transparent Panel oder such hier im Forum. Gab da schonmal so was, was halt einfach das auf sich selber gezeichnet hat, was dahinter lag.

Hmmm, dafür fehlt mir die Zeit im Moment, das ganze muss schnell fertig werden.
Aber nochmal zurück zu den Checkboxen, vielleicht weisst du folgendes:

Wie kann man auf einen Schlag sagen wir mal 30/40 Checkboxen auf die GUI klatschen und dafür sorgen, das sie wenigstens mittig sitzen und nicht über die GUI hinausragen?

Etwa:

------------------------------
[x] [x] usw...
[x] [x]
[x] [x]
[x] [x]
------------------------------

Nuclear-Ping 5. Apr 2007 14:14

Re: Checkbox
 
Delphi-Quellcode:
// Absichtlich dynamisches Array
var
  myCheckboxes: Array of TCheckbox;
  a: Integer;
begin
  SetLength (myCheckboxes, 30);
  for a := 0 to Length (myCheckboxes) - 1 do
    begin
      myCheckboxes[a] := TCheckbox.Create (Self);
      with myCheckboxes[a] do
        begin
          Parent := Self;
          Name := 'Checkbox' + inttostr (a + 1);
          Caption := 'Checkbox ' + inttostr (a + 1);
          Width := 100;
          Left := 8; // ggf anpassen falls du Spalten machen willst
          Top := (a + 1) * 8;
        end;
    end;

end;
Sollte klappen. Nicht vergessen, die dann auch wieder freizugeben wenn du sie nicht mehr brauchst (Programmende).

stOrM 5. Apr 2007 14:19

Re: Checkbox
 
Zitat:

Zitat von Nuclear-Ping
Delphi-Quellcode:
// Absichtlich dynamisches Array
var
  myCheckboxes: Array of TCheckbox;
  a: Integer;
begin
  SetLength (myCheckboxes, 30);
  for a := 0 to Length (myCheckboxes) - 1 do
    begin
      myCheckboxes[a] := TCheckbox.Create (Self);
      with myCheckboxes[a] do
        begin
          Parent := Self;
          Name := 'Checkbox' + inttostr (a + 1);
          Caption := 'Checkbox ' + inttostr (a + 1);
          Width := 100;
          Left := 8; // ggf anpassen falls du Spalten machen willst
          Top := (a + 1) * 8;
        end;
    end;

end;
Sollte klappen. Nicht vergessen, die dann auch wieder freizugeben wenn du sie nicht mehr brauchst (Programmende).

Das ging schnell!
Vielen Dank, Spalten? könnte sein mal sehen wie ich die [x] Plaziere...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr.
Seite 1 von 3  1 23      

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