Main폼 내 Frame위치에 위에서 생성한 Frame을 위치하고 동적으로 생성하는 코드 추가
procedure TfrmMain.pnlLprFramesResize(Sender: TObject);
begin
DrawFrames(_preLprCount, _LprFrameGroup, 1);
end;
procedure TfrmMain.DrawFrames(AFrameCount: Integer; const AFrameGroup: TArray<TFrame>; const AFlag: Integer =0 );
begin
for var i := Low(AFrameGroup) to High(AFrameGroup) do
begin
AFrameGroup[i].Height := pnlLprFrames.Height div (((AFrameCount-AFlag) div _FramesInARow)+1);
AFrameGroup[i].Top := AFrameGroup[i].Height * (i div _FramesInARow);
AFrameGroup[i].Width := pnlLprFrames.Width div _FramesInARow;
AFrameGroup[i].Left := AFrameGroup[i].Width * (i mod _FramesInARow);
end;
end;
procedure TfrmMain.AddFrame(var AFrameGroup: TArray<TFrame>);
var
LastIndex: Word;
begin
SetLength(AFrameGroup, Length(AFrameGroup)+1);
LastIndex := Length(AFrameGroup)-1;
AFrameGroup[LastIndex] := TFrameLpr.Create(pnlLprFrames);
with TFrameLpr(AFrameGroup[LastIndex]) do
begin
Name := 'FrameLpr'+IntToStr(LastIndex);
Tag := LastIndex;
Width := pnlLprFrames.Width div _FramesInARow;
Height := pnlLprFrames.Height div ((LastIndex div _FramesInARow)+1);
Left := Width * (LastIndex mod _FramesInARow);
Top := Height * (LastIndex div _FramesInARow);
Parent := pnlLprFrames;
UseBarControl := ConfigInfo.UseBarControl;
UseEachLprState := ConfigInfo.UseEachLprState;
end;
TFrameLpr(pnlLprFrames.FindChildControl(AFrameGroup[LastIndex].Name)).UnitName := AFrameGroup[LastIndex].Name;
TFrameLpr(pnlLprFrames.FindChildControl(AFrameGroup[LastIndex].Name)).FrameIndex := LastIndex;
// TFrameLpr(pnlLprFrames.FindChildControl(AFrameGroup[LastIndex].Name)).Caption
DrawFrames(LastIndex, AFrameGroup, 0);
end;
procedure TfrmMain.RemoveFrame(var AFrameGroup: TArray<TFrame>);
var
LastIndex: Word;
begin
LastIndex := Length(AFrameGroup)-1;
AFrameGroup[LastIndex].Free;
AFrameGroup[LastIndex] := nil;
SetLength(AFrameGroup, LastIndex);
DrawFrames(LastIndex, AFrameGroup, 1);
end;
댓글