Avatar billede wampiro-uha Nybegynder
07. marts 2004 - 11:00 Der 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?
Avatar billede hrc Mester
07. marts 2004 - 11:24 #1
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;

TfrmEditSettings = class(TForm)
private
public
  constructor Create(aSender : TComponent; aSettings : TSettings); reintroduce;
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.

Jeg håber at du(andre) kan forstå hvad jeg mener.
Avatar billede hrc Mester
07. marts 2004 - 11:25 #2
Jeg kan evt. lave et kørende eksempel.
Avatar billede wampiro-uha Nybegynder
07. marts 2004 - 12:52 #3
du må godt lave et eks.
Avatar billede wampiro-uha Nybegynder
07. marts 2004 - 13:54 #4
Hmm. Jeg synes det virker noget indviklet?
Er der ikke nogen som først kan fortælle mig hvorledes jeg skal åbne og lukke mit indstilling vindue.

Så må det med at checke selve indstillingerne komme bagefter!
Avatar billede wampiro-uha Nybegynder
07. marts 2004 - 21:22 #5
Lukker... Takker!
Avatar billede hrc Mester
10. marts 2004 - 12:09 #6
wampiro-uha'dada. Beklager ventetiden, men hvis det stadig har interesse så har jeg et lille eksempel som du måske kan bruge.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester