Hi zusammen
Da sich
dieser Thread vom ursprünglichen Thema entfernt hat, beginne ich hier einen Neuen.
Corpus Delicti ist dies:
Vorerst aber zu dem, was sich seit dem oben verlinkten Thread geändert hat.
Nach wie vor im RadiobuttonFrame:
Delphi-Quellcode:
procedure TRadioButtonsFrame.RadioButtonPosition2;
var i, x, y, ScBX, LHeight, LLeft: Integer;
begin
inc(FResizeCounter);
x := FRadioButtonList.Count -1;
Self.FReportList.Add('procedure TRadioButtonsFrame.RadioButtonPosition2 - ' + inttostr(FResizeCounter));
For i := 0 to x do
begin
FRadioButtonList.Items[i].Width := 50;
LLeft := (ScBxRadioButtons.ClientWidth div 2) - (FRadioButtonList.Items[i].Width div 2);
LHeight := (i * FRadioButtonList.Items[i].Height) + ScBxRadioButtons.ClientHeight div 4;
ScBX := ScBxRadioButtons.ClientWidth div 2; //<=
Self.FReportList.Add('ScBxRadioButtons.ClientWidth div 2 := ' + IntToStr(ScBX));
Self.FReportList.Add('LLeft := ' + IntToStr(LLeft));
Self.FReportList.Add('LHeight := ' + IntToStr(LHeight));
FRadioButtonList.Items[i].Left := LLeft;
FRadioButtonList.Items[i].Top := LHeight;
end;
end;
Als einziges ist hier die grün markierte Zeile hinzugekommen. Ausserdem wird die Routine nicht mehr aus dem OnResize des Frames, sondern as dem OnCreate der Mainform aufgerufen:
Delphi-Quellcode:
procedure THomeOfficerMainForm.FormCreate(Sender: TObject);
begin
FReportList := TStringlist.Create();
Self.RadioButtonsFrame1.RadioButtonPosition2;
Self.PdfScanFrame1.RadioButtonsFrame1.RadioButtonPosition2;
end;
Beim Beenden der Form lese ich die Reportliste des Frames aus:
Delphi-Quellcode:
procedure THomeOfficerMainForm.WriteReportFile;
var S, DateTimeStr, DS: string;
ReportStream: TFileStream;
begin
DS := DateTimeToStr(Now);
DateTimeStr := StringReplace(DS, ':', '-', [rfReplaceAll]);
S := ExtractFilePath(Application.ExeName) + '\' + 'CodeReport ' +DateTimeStr+'.txt';
try
Reportstream := TFileStream.Create(S, fmOpenReadWrite);
except
Reportstream := TFileStream.Create(S, fmCreate);
end;
try
FReportList.insert(0,DateTimeToStr(Now));
FReportlist.Insert(1,'----------------');
FReportList.AddStrings(Self.RadioButtonsFrame1.ReportList);
FReportList.AddStrings(Self.PdfScanFrame1.RadioButtonsFrame1.ReportList);
FReportlist.SaveToStream(ReportStream);
finally
Reportstream.Free;
end;
end;
Und diese Liste:
Delphi-Quellcode:
29.01.2019 13:17:49
----------------
procedure TRadioButtonsFrame.RadioButtonPosition2 - 1
ScBxRadioButtons.ClientWidth div 2 := 396 //<==
LLeft := 371
LHeight := 55
ScBxRadioButtons.ClientWidth div 2 := 396 //<==
LLeft := 371
LHeight := 74
ScBxRadioButtons.ClientWidth div 2 := 396 //<==
LLeft := 371
LHeight := 97
ScBxRadioButtons.ClientWidth div 2 := 396 //<==
LLeft := 371
LHeight := 118
procedure TRadioButtonsFrame.RadioButtonPosition2 - 1
ScBxRadioButtons.ClientWidth div 2 := 43 //<==
LLeft := 18
LHeight := 32
ScBxRadioButtons.ClientWidth div 2 := 43 //<==
LLeft := 18
LHeight := 51
ScBxRadioButtons.ClientWidth div 2 := 51 //<====
LLeft := 26
LHeight := 74
ScBxRadioButtons.ClientWidth div 2 := 51 //<==
LLeft := 26
LHeight := 95
Wie man sieht, ändert sich nach dem 2. Prozedurkopf der Wert von ScBxRadioButtons.ClientWidth div 2 (ScBx := Scrollbox). Wie kann so etwas geschehen?
Gruss
Delbor