AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

scrollbox -> radiobuttons aktivieren

Ein Thema von slm · begonnen am 12. Aug 2005 · letzter Beitrag vom 13. Aug 2005
 
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: scrollbox -> radiobuttons aktivieren

  Alt 12. Aug 2005, 19:15
Deshalb:

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
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:38 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