Einzelnen Beitrag anzeigen

hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#8

AW: integer bit werte in checkbox anzeigen

  Alt 13. Jun 2011, 11:20
Delphi-Quellcode:
// folgendes kann man zur design time festlegen:
//
Checkbox1.Tag := 1 shl 1;
Checkbox2.Tag := 1 shl 2;
//...
Checkbox15.Tag := 1 shl 15;
Checkbox16.Tag := 1 shl 16;

// Checkbox-Objekte sind etwa in einem Panel oder einer Groupbox

// ...

// und das hier funktioniert für eine beliebige Anzahl von Elementen mit leicht
// änderbaren Flags, dazu noch Kombinationen von Flags.
var
  idx: longint;
  tray : TWinControl;
  cb : TCheckBox;
begin
  tray := (Checkbox1.Parent as TWinControl);
  for idx := 0 to tray.ControlCount - 1 do
  begin
     if (tray.Controls[idx] is TCheckbox) then
     begin
        cb := (tray.Controls[idx] as TCheckbox);
        cb.Checked := (cb.Tag AND Value) <> 0;
     end;
  end;
end;

ps. alternativ zur Initialisierung (automatisches tagging):
Delphi-Quellcode:
uses math;
//...
var
  cb : TCheckBox;
  i : longint;
//...
for i := 1 to 16 do
begin
  cb := TCheckBox(FindComponent('CheckBox' + IntToStr(i)));
  if assigned(cb) then cb.Tag := power(2,i-1);
end;
Power is nothing without TControl

Geändert von hboy (13. Jun 2011 um 12:02 Uhr)
  Mit Zitat antworten Zitat