07. marts 2004 - 11:00Der er
5 kommentarer og 1 løsning
Indstillingsboks, hvordan?
Jeg har et form som kalder en anden form ved hjælp af Form3.Visible := True;
Så bliver den vist, og det er en indstillingsboks. Det jeg gerne nu vil er at hver eneste gang jeg åbner indstillingsboksen, som indeholder en masse checkbokses, at der checkes om hver enkelt checkboks skal være afkrydset eller ej.
Og når jeg lukker min Form3 bruger jeg bare Form3.Visible := False;
Hvad skal jeg gøre for at løse mit problem, og er det sådan man laver indstillingsbokse normalt/bedst?
For det første bør du undgå at autokreere formene. Det er noget skrammel.
Arrrh. Der er mange muligheder. Hvis man har en record/objekt med indstillinger som du vil redigere har jeg lavet forskellige måder. Den jeg synes bedst om er denne - men det er nok også den mest besværlige.
Klassen har en Edit-metode:
TSettings = class private fChekced : array[0..max] of boolean; public procedure Edit(aSender : TComponent); property Checked[aIndex : integer] : boolean read GetChecked; default; end;
procedure TSettings.Edit(aSender : TComponent); var i : integer; begin with TfrmEditSettings.Create(aSender,self) do try if ShowModal = mrOK then // Set values for i := 0 to max do fChecked[i] := CheckListBox.Checked[i]; finally free; end; end;
function TSettings.GetChecked(aIndex : integer) : boolean; begin result := fChecked[aIndex]; end;
{TfrmEditSettings}
TfrmEditSettings.Create(aSender : TComponent; aSettings : TSettings); var i : integer; begin inherited Create(aSender); for i := 0 to max do begin CheckListBox.Items.Add('Linie: '+IntToStr(i)); // Der skal jo stå et eller andet! CheckListbox.Checked[i] := aSettings[i]; // Fordi jeg bruger "default" end; // for end;
Jeg har ændret constructoren til formen (den du kalder TForm3) således at TSettings sendes med over. Man kan så diskutere om formen skal have lov til selv at ændre værdierne. Det har jeg ikke tilladt idet property TSettings.Checked[i] er en readonly. Det er derfor at Edit-metoden løber den igennem hvis ModalResult = mrOK.
wampiro-uha'dada. Beklager ventetiden, men hvis det stadig har interesse så har jeg et lille eksempel som du måske kan bruge.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.