Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#30

AW: Problem bei case // Problem bei Komponenten löschen

  Alt 3. Sep 2010, 14:51
nein, nicht wirklich:

Delphi-Quellcode:
procedure TForm1.BitBtnDruckenClick(Sender: TObject);
var
  iChecked, iZaehler, iGecheckteFrames, iY, iRunter, iErstellteFrames, i: Integer; // hier schon einrücken
begin
  Formular := TForm.Create(Self); // Leerzeichen
  Formular.ClientHeight := 1500;
  Formular.ClientWidth := 670;
  L := TComponentList.Create; // Leerzeichen + Groß/Kleinschreibung
  L.OwnsObjects := False;
  iGecheckteFrames := 0;
  iErstellteFrames := 0;
  iY := 0;
  iRunter := 0;
  iZaehler := 0;
  for iChecked := 0 to CheckListBox1.Items.Count - 1 do
  begin // Was soll in der Schleife laufen? Bis incl. Formular.Show? Dann wird das Formular Items.Count mal angezeigt.
    if CheckListBox1.Checked[iChecked] then
    begin // alles folgende wird bei Checked durchgeführt, Formular.Show aber immer
      if iZaehler < 10 then
      begin
        Frames := TFrame4.Create(Self);
        L.Add(Frames);
        Frames.ClientHeight := 200;
        Frames.Name:='';
        iZaehler := iZaehler + 1;
        iGecheckteframes := iGecheckteframes + 1;
        Frames.Parent := Formular;
      end;
    //end; dieses End würde bedeuten dass die Checked-Bedingung nur bis hierher gelten würde
      case iZaehler of
        10: begin
              for I := l.Count -1 downto 0 do
              begin
                Frames:= (L[i] as TFrame4);
                Frames.Free;
                iZaehler := 0;
              end;
              //begin <- unnötig
              if iGecheckteFrames = 13 then
                ShowMessage('Formular in Zwischenablage kopieren + Formular leeren');
              //end; < unnötig
            end;
         0: begin
              Frames.Top := iY;
              if iGecheckteFrames = 13 then
                ShowMessage('Zwischenablage drucken + aktuelle Form leeren');
            end;
      2..5: begin
              Frames.Top := iY + Frames.ClientHeight;
              iY := Frames.Top;
              Frames.Parent := Formular;
              if iGecheckteFrames = 13 then
                ShowMessage('Zwischenablage drucken + aktuelle Form drucken');
            end;
         6: begin
              Frames.ClientHeight := 200;
              Frames.Name := '';
              Frames.Left := 350;
            end;
      7..9: begin
              Frames.Left := 350;
              Frames.Top := iRunter + Frames.ClientHeight;
              iRunter:= Frames.Top;
              if iGecheckteFrames = 13 then
                ShowMessage('Zwischenablage drucken + aktuelle Form drucken');
            end;
      end;
    end;
    Formular.Show;
  end;
end;
Soweit mal ungetestet auf die Schnelle.
Auf jeden Fall hat man jetzt die Chance, sich ungefähr zurecht zu finden.
Die Leerzeichen und Groß/Klein-Schreibung ist vielleicht etwas Krümelkackerei, man sollte sich das aber gleich so angewöhnen, da man so viel schneller mögliche Tippfehler findet.

Ich weiß aber ehrlich gesagt jetzt nicht genau, was Du genau erreichen willst bzw. wo etwas nun nicht wie erwartet klappt (Du hast da einfach schon zu viele Varianten beschrieben).

Also nun nochmal:
- ordne Deinen Quelltext
- setze einen Breakpoint und arbeite den Quelltext schrittweise ab
- stelle konkrete Fragen mit präziser Problembeschreibung (dann kommt man oft bei einer Problemformulierung schon selbst auf die Lösung - kannst Du mir glauben )
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat