Schiebeschalter

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
hbr
Beiträge: 325
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Schiebeschalter

Beitrag von hbr »

Hallo,
gibt es eine Erweiterung für Lazarus die eine CheckBox als Schiebeschalter oder Kippschalter darstellt?


Gruß

Linkat
Lazarusforum e. V.
Beiträge: 581
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22.1; Lazarus 4.2 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: Schiebeschalter

Beitrag von Linkat »

Guten Morgen hbr,

versuch mal die Eye-Candy-Controls:

http://wiki.freepascal.org/Eye-Candy_Controls

Vielleicht ist was dabei, das dir gefällt.

Gruß, Linkat
Linux Mint 22.1; Lazarus 4.2 FPC 3.2.2; RaspiOS

hbr
Beiträge: 325
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Schiebeschalter

Beitrag von hbr »

Danke,
schon mal eine Variante. :)

Gruß

wp_xyz
Beiträge: 5410
Registriert: Fr 8. Apr 2011, 09:01

Re: Schiebeschalter

Beitrag von wp_xyz »

Aber für einen einfachen Schiebeschalter musst du dir keine riesige Komponentensammlung installieren. Es geht auch mit Bordmitteln. Zum Beispiel ein Panel, in das mit Align=alLeft ein quadratisches TShape gesetzt ist. Das Panel muss doppelt so breit sein wie TShape. Im OnClick des TShape setzt du dessen Align auf alRight, falls Align gerade alLeft ist, bzw andernfalls auf alLeft. Damit rutscht das Quadrat bei jedem Klick von links nach rechts bzw umgekehrt. Dem Shape gibst du über dessen BorderSpacing.Around etwas Abstand zum Panel. Das kann man natürlich auch in eine Komponente packen, aber für einfache Sachen reicht es auch so.
Dateianhänge
Schiebeschalter.zip
(2.14 KiB) 100-mal heruntergeladen

hbr
Beiträge: 325
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Schiebeschalter

Beitrag von hbr »

Danke, auch nicht schlecht,
doch bei ca. 60 Checkboxen ein ziemlicher Aufwand.

Gruß

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7267
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Schiebeschalter

Beitrag von af0815 »

hbr hat geschrieben:Danke, auch nicht schlecht,
doch bei ca. 60 Checkboxen ein ziemlicher Aufwand.

Gruß
Wieso 1x programmieren 60x nutzen :-) SCNR
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 5410
Registriert: Fr 8. Apr 2011, 09:01

Re: Schiebeschalter

Beitrag von wp_xyz »

Wie man's nimmt. Wozu gibt es Sourcecode?
Dateianhänge
Schiebeschalter2.zip
(2.62 KiB) 94-mal heruntergeladen

hbr
Beiträge: 325
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Schiebeschalter

Beitrag von hbr »

wp_xyz hat geschrieben:Wie man's nimmt. Wozu gibt es Sourcecode?
Danke, versteh ich nicht, was soll mann damit machen?
Läuft nicht, zwei Fehlermeldungen.
unit2.pas(75,11) Error: identifier idents no member "OnMouseEnter"
unit2.pas(78,11) Error: identifier idents no member "OnMouseLeave"

wp_xyz
Beiträge: 5410
Registriert: Fr 8. Apr 2011, 09:01

Re: Schiebeschalter

Beitrag von wp_xyz »

hbr hat geschrieben:Danke, versteh ich nicht, was soll mann damit machen?
Ich wollte dir nur zeigen, dass kaum mehr Code nötig ist, um 60 solcher handgemachter Schalter zu erzeugen.
hbr hat geschrieben:Läuft nicht, zwei Fehlermeldungen.
unit2.pas(75,11) Error: identifier idents no member "OnMouseEnter"
unit2.pas(78,11) Error: identifier idents no member "OnMouseLeave"
Dann musst du einen uralten Lazarus haben. Laz 1.4.4, die älteste Version, die ich z.Zt auf dem Rechner habe, übersetzt das Programm klaglos, und die neueren Versionen tun's erst recht.

hbr
Beiträge: 325
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Schiebeschalter

Beitrag von hbr »

Ah ja, muss mal die Alte Version vom Rechner verbannen.

Hier werden ja jetzt in FormCreate die Switches mittels Schleifen erstellt.
Wie mach ich denn das, wenn ich in meinem Programm in verschiedene Formen die Switches verteilt habe und diese per Top und Left Positionieren will?

wp_xyz
Beiträge: 5410
Registriert: Fr 8. Apr 2011, 09:01

Re: Schiebeschalter

Beitrag von wp_xyz »

Naja, jetzt lässt du aber die Katze aus dem Sack... Mit den Panels wird's dann etwas umständlich. Einfacher wird's mit einem TFrame, in dessen Unit man den gesamten benötigten Hilfscode packen kann. Damit wird's fast so einfach wie mit einer Komponente. Den Frame kann man von jedem Formular aus einbinden, der den Schalter benötigt. Den Frame positioniert man mit Hilfe seiner Eigenschaften Left und Top.
Dateianhänge
Schiebeschalter4.zip
(3.69 KiB) 114-mal heruntergeladen

Mathias
Beiträge: 7251
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Schiebeschalter

Beitrag von Mathias »

Wieso nicht einen einfachen Scrollbar nehmen ?

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  with ScrollBar1 do begin
    Width := 56;
    max := 1;
  end;
end;
 
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
  Caption := IntToStr(ScrollBar1.Position);
end;    
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

hbr
Beiträge: 325
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Schiebeschalter

Beitrag von hbr »

wp_xyz hat geschrieben:Naja, jetzt lässt du aber die Katze aus dem Sack... Mit den Panels wird's dann etwas umständlich. Einfacher wird's mit einem TFrame, in dessen Unit man den gesamten benötigten Hilfscode packen kann. Damit wird's fast so einfach wie mit einer Komponente. Den Frame kann man von jedem Formular aus einbinden, der den Schalter benötigt. Den Frame positioniert man mit Hilfe seiner Eigenschaften Left und Top.
Super,
doch was muß ich in switchunit hinzufügen, damit das Shape ohne Zwischenraum im Panel eingepasst wird, also TOP und Bottom Bündig.
Denn wenn ich die Größe auf 14 Stelle(welche ich benötige), ist mir das Shape zu schmal und die Lücke oben und unten ist zu groß.

Gruß

Nachtrag:
shape1.BorderSpacing.Bottom := -1; in Create Funktioniert
Zuletzt geändert von hbr am So 11. Sep 2016, 22:34, insgesamt 1-mal geändert.

hbr
Beiträge: 325
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Schiebeschalter

Beitrag von hbr »

Mathias hat geschrieben:Wieso nicht einen einfachen Scrollbar nehmen ?

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  with ScrollBar1 do begin
    Width := 56;
    max := 1;
  end;
end;
 
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
  Caption := IntToStr(ScrollBar1.Position);
end;    
Danke,
aber sieht nicht gut aus.
Gruß

Antworten