Delphi-PRAXiS

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 scrollbox -> radiobuttons aktivieren (https://www.delphipraxis.net/51456-scrollbox-radiobuttons-aktivieren.html)

slm 12. Aug 2005 15:52


scrollbox -> radiobuttons aktivieren
 
hoffe mir kan jemand behilflich sein hab schon überall gesucht aber nichts gefunden.


hab mehrere radiobuttons in einer scrollbox

aber wie kann ich die radiobuttons als checked setzen

mit vor und zurück buttons die entweder den nächsten oder den vorigen radiobutton auswählen sollen, krieg das aber nicht hin.


mit radiogroup ist es kein problem

kann mit

x:=radiogroup1.ItemIndex;
radiogroup1.ItemIndex:=x+1; oder -1

den nächsten oder vorigen auswählen.


aber wie mache ich das mit einer scrollbox, ich kann auch nicht auf ein radiogroup ausweichen brauche ne scrollbox.

mfg slm

Matze 12. Aug 2005 15:59

Re: scrollbox -> radiobuttons aktivieren
 
Du könntest die RadioButons per Delphi-Referenz durchsuchenFindComponent ansprechen und entsprechend die Eigenschaft Checked setzen.

slm 12. Aug 2005 17:30

Re: scrollbox -> radiobuttons aktivieren
 
hallo matze danke für die antwprt aber wenn ich findcomponent benutze finde ich nichts womit ich auf checked setzen könnte


wieso kann ich hiermit nicht zum nächsten komponenten springen

a:=scrollbox1.ComponentIndex;
scrollbox1.ComponentIndex:=a+1;

slm

marabu 12. Aug 2005 19:15

Re: scrollbox -> radiobuttons aktivieren
 
Deshalb:

Delphi-Quellcode:
ScrollBox = ScrollBox.Owner.Components[ScrollBox.ComponentIndex];

PS: Ich bin verrückt und helfe dir bei diesem Verbrechen - Radiobuttons in einer ScrollBox - unter OS/2 würdest du dafür in der Programmiererhölle schmoren...

Mir fallen zwei Lösungsansätze ein, für die du dir den aktuellen RadioButton im OnClick-Event merken musst:

Delphi-Quellcode:
procedure TDemoForm.RadioButtonClick(Sender: TObject);
begin
  rbChecked := Sender as TRadioButton;
end;
(1) Du verschaffst dir über einen class hack Zugang zu RadioButton.Parent.FControls und stellst über IndexOf() den Index des aktuellen RadioButton fest:

Delphi-Quellcode:
interface

type
  TDemoForm = class(TForm)
    ScrollBox: TScrollBox;
    NextButton: TButton;
    PrevButton: TButton;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    procedure NextButtonClick(Sender: TObject);
    procedure RadioButtonClick(Sender: TObject);
    procedure PrevButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    rbChecked: TRadioButton;
    ...
  end;

implementation
type
  THacked = class(TWinControl)
  public
    FControls: TList;
  end;

procedure TDemoForm.PrevButtonClick(Sender: TObject);
var
  iCount, iPrev: integer;
begin
  iCount := rbChecked.Parent.ControlCount;
  iPrev := (THacked(rbChecked.Parent).FControls.IndexOf(rbChecked) + iCount - 1) mod iCount;
  with rbChecked.Parent.Controls[iPrev] as TRadioButton do
    Checked := true;
end;
(2) Alternativ packst du den Index eines jeden RadioButton in das Controls-Array seines Parent in seine Tag-property - manuell oder im OnCreate-Event der Form:

Delphi-Quellcode:
procedure TDemoForm.NextButtonClick(Sender: TObject);
var
  iCount, iNext: integer;
begin
  iCount := rbChecked.Parent.ControlCount;
  iNext := Succ(rbChecked.Tag) mod iCount;
  with rbChecked.Parent.Controls[iNext] as TRadioButton do
    Checked := true;
end;
Mag sein, dass du dich noch um ein paar Feinheiten kümmern musst - aber irgendwann musst du mir mal verraten, was dich umtreibt RadioButtons in eine ScrollBox zu packen.

Grüße vom marabu

slm 12. Aug 2005 23:00

Re: scrollbox -> radiobuttons aktivieren
 
@ marabu

ich danke dir für deine antwort habs immer noch nicht hinbekommen, mit deiner lösung
da bin ich noch absoluter anfänger

ich brauche das für ein programm mit mehreren büchern die aus vielen html seiten bestehen
die radiobuttons sind die kapitel, da das ganze einheitlich aussehen soll und ich nach anraten hier keine scrolleiste in radiogoups einbauen kann (wahrscheinlich ist es schon möglich :lol: ) kann ich keine radiogroups benutzen da die bücher
nicht die gleiche anzahl an kapitel haben. deshalb scrollbox mit radiobuttons

dachte nicht das es so kompliziert ist.




da ist das ja leichter

und die buttons sind in ner scrollbox gut das es kein os/2 ist :lol:

procedure TForm3.JvBitBtn1Click(Sender: TObject);
begin
begin if radiobutton2.Checked then radiobutton1.Checked:=true;
begin if radiobutton3.Checked then radiobutton2.Checked:=true; end;
begin if radiobutton4.Checked then radiobutton3.Checked:=true; end;
begin if radiobutton5.Checked then radiobutton4.Checked:=true; end;
begin if radiobutton6.Checked then radiobutton5.Checked:=true; end;
begin if radiobutton7.Checked then radiobutton6.Checked:=true; end;
begin if radiobutton8.Checked then radiobutton7.Checked:=true; end;
begin if radiobutton9.Checked then radiobutton8.Checked:=true; end;
begin if radiobutton10.Checked then radiobutton9.Checked:=true; end;
begin if radiobutton11.Checked then radiobutton10.Checked:=true; end;
begin if radiobutton12.Checked then radiobutton11.Checked:=true; end;
begin if radiobutton13.Checked then radiobutton12.Checked:=true; end;
begin if radiobutton14.Checked then radiobutton13.Checked:=true; end;
begin if radiobutton15.Checked then radiobutton14.Checked:=true; end;
begin if radiobutton16.Checked then radiobutton15.Checked:=true; end;
begin if radiobutton17.Checked then radiobutton16.Checked:=true; end;
begin if radiobutton18.Checked then radiobutton17.Checked:=true; end;
begin if radiobutton19.Checked then radiobutton18.Checked:=true; end;
begin if radiobutton20.Checked then radiobutton19.Checked:=true; end;
begin if radiobutton21.Checked then radiobutton20.Checked:=true; end;
begin if radiobutton22.Checked then radiobutton21.Checked:=true; end;
begin if radiobutton23.Checked then radiobutton22.Checked:=true; end;
begin if radiobutton24.Checked then radiobutton23.Checked:=true; end;
begin if radiobutton25.Checked then radiobutton24.Checked:=true; end;
begin if radiobutton26.Checked then radiobutton25.Checked:=true; end;
begin if radiobutton27.Checked then radiobutton26.Checked:=true; end;
begin if radiobutton28.Checked then radiobutton27.Checked:=true; end;
begin if radiobutton29.Checked then radiobutton28.Checked:=true; end;
begin if radiobutton30.Checked then radiobutton29.Checked:=true; end;
begin if radiobutton31.Checked then radiobutton30.Checked:=true; end;
end;


ich dachte ich kann das hier bisschen komprimieren aber das das so kompliziert wird buh :gruebel:
es ist nicht dynamisch und sieht nicht gut aus :zwinker: aber was solls

irgendwie krieg ich keine sätze mehr zusammen glaube bin müde

dank marabu dem könig
man darauf muss man mal zuerst kommen
respekt

mfg slm

Ultimator 12. Aug 2005 23:23

Re: scrollbox -> radiobuttons aktivieren
 
Zitat:

Zitat von marabu
(1) Du verschaffst dir über einen class hack [..]

:shock: DAS is ja mal ne coole Methode :lol:

Die kannte ich bisher nicht, aber man kanns sicher mal brauchen :)

marabu 13. Aug 2005 07:08

Re: scrollbox -> radiobuttons aktivieren
 
Zitat:

Zitat von slm
ich brauche das für ein programm mit mehreren büchern die aus vielen html seiten bestehen - die radiobuttons sind die kapitel

Ich würde dafür eine TreeView verwenden. Du kannst dann sogar mehrere Bücher gleichzeitig offen halten, die Titel auf der ersten Knotenebene und die Kapitel auf der nächsten.

Zitat:

Zitat von slm
dank marabu dem könig

Die Monarchie ist tot und der marabu ist nur ein alter komischer Vogel - aber hey, danke für die Blumen.

Zitat:

Zitat von slm
man darauf muss man mal zuerst kommen

Das kann man lernen - du auch.

Freundliche Grüße vom marabu

Sharky 13. Aug 2005 09:50

Re: scrollbox -> radiobuttons aktivieren
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hai slm,

wenn es dir "nur" darum geht zu zeigen in welchem Kapitel man sich eben befindet könntest Du es auch mit einer TListBox lösen und einfach eine Grafik vor das Kapitel zeichen. (siehe Anhang: Bild1).

Das ganze Beispielprojekt hänge ich auch mal an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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