Skip to content

Commit

Permalink
Form reposition controls on resize
Browse files Browse the repository at this point in the history
  • Loading branch information
flakron-shkodra committed Mar 9, 2023
1 parent 65eb6dc commit 19bb0d1
Show file tree
Hide file tree
Showing 9 changed files with 3,125 additions and 84 deletions.
116 changes: 111 additions & 5 deletions DbInfo/AsDbFormUtils.pas
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,7 @@ TAsDbForm = class(TForm)
FSchema:string;//used only when AsDbLookupComboEdit (table reference field is clicked for edit '..')
FSqlQuery:string;
FEditRowCount:Integer;
FControlColumns:Integer;
FQuickSearchToolbar:TToolbar;
FQuickSearchFieldsCmb:TComboBox;//created from MakeQuickSearchToolbar (populated from OpenData)
FQuickSearchEdit:TEdit;//created from MakeQuickSearchToolbar (used in OnQuickSearchChange)
Expand All @@ -240,8 +241,10 @@ TAsDbForm = class(TForm)
procedure OnPrintGridButtonClick(Sender:TObject);
procedure OnGridColumsListClick(Sender: TObject; Index: integer);
procedure OnGridColumnListExit(Sender: TObject);
procedure OnFormResize(Sender:TObject);
procedure ShowColumnsButtonClick(Sender:TObject);
procedure MakeEditControls;
procedure RepositionEditControls;
procedure ClearEditControls;
function MakeQuickSearchToolbar(aOwner:TComponent):TToolbar;
procedure SetSqlQuery(AValue: string);
Expand Down Expand Up @@ -766,6 +769,11 @@ procedure TAsDbForm.OnGridColumnListExit(Sender: TObject);
FColumnsList.Visible:=False;
end;

procedure TAsDbForm.OnFormResize(Sender: TObject);
begin
RepositionEditControls;
end;

procedure TAsDbForm.AfterEdit(DataSet: TDataSet);
begin
FEditControlsBox.Enabled:=True;
Expand Down Expand Up @@ -1110,6 +1118,104 @@ procedure TAsDbForm.MakeEditControls;

end;

procedure TAsDbForm.RepositionEditControls;
var
X, Y, HorCount, I,FHeight : Integer;
dao:TAsUIDataAcessObject;
fieldName: String;
lbl:TLabel;
edt:TDBedit;
cmbLookup:TAsDBLookupComboBoxEdit;
chk:TDBCheckBox;
dt :TDBDateTimePicker;
be:TAsDbBlobEdit;
sed:TAsDBSpinEdit;
mem:TDBMemo;
LastControlHeight: Integer;
ik: TAsImportedKeyInfo;
lastControl:TControl;
controlName:string;
howMany, K:integer;
refSql, csharpName: String;
refObj: TAsTableInfo=nil;
ft: TFieldType;
begin

X := 5;
Y := 5;
HorCount:= 1;
FControlColumns :=Width div (FControlWidth + FControlSpace);

//Reposition edit controls
for I:=0 to FTableInfo.AllFields.Count-1 do
begin

fieldName:= FTableInfo.AllFields[I].FieldName;
controlName:= EmptyStr;
csharpName := FTableInfo.AllFields[I].CSharpName;
lastControl := nil;
lbl := FEditControlsBox.FindChildControl('lbl'+csharpName) as TLabel;

if lbl=nil then
continue;

lbl.Parent := FEditControlsBox;
lbl.Left:= X;
lbl.Top := Y;
lbl.Width:=FControlWidth;

if not FTableInfo.AllFields[I].IsReference then
begin
ft := FTableInfo.AllFields[I].DataType;
case FTableInfo.AllFields[I].DataType of
ftBoolean: controlName := 'chk'+csharpName;
ftDate,ftDateTime: controlName := 'dt'+csharpName;
ftMemo,ftWideMemo: controlName := 'mem'+csharpName;
ftBlob,ftOraBlob: controlName := 'be'+csharpName;
ftInteger,ftWord, ftLargeint,ftSmallint,ftFloat,ftCurrency,ftBCD: controlName := 'se'+csharpName;
else controlName := 'edt'+csharpName;
end;//end case
end else
begin
if FTableInfo.ImportedKeys.ContainsColumn(fieldName) then
controlName := 'cmb'+csharpName;
end;

lastControl := FEditControlsBox.FindChildControl(controlName);

if lastControl<>nil then
begin

lastControl.Top:=lbl.Top + lbl.Height + 2;
lastControl.Left:= lbl.Left;
lastControl.Width:= FControlWidth;

//Max number of DBControls horizontally
if HorCount = FControlColumns then
begin
HorCount:=0;
X := 5;
Y := Y + lastControl.Height +lbl.Height + 10;
Inc(FEditRowCount,1);
end else
begin
X := X + FControlWidth + FControlSpace;
end;
Inc(HorCount,1);


Inc(FEditRowCount,1);
FEditControlsBox.Height:=lastControl.Top+lastControl.Height + 20;

if FEditControlsBox.Height >= 340 then
FEditControlsBox.Height := 340;

end;

end;

end;

procedure TAsDbForm.ClearEditControls;
begin
while FEditControlsBox.ControlCount>0 do
Expand Down Expand Up @@ -1210,8 +1316,9 @@ constructor TAsDbForm.Create(aDbInfo: TAsDbConnectionInfo; aSchema: string;
FControlWidth:= 150;
FControlSpace:= 5;
FEditRowCount:=1;
BorderStyle:= bsSingle;
BorderStyle:= bsSizeable;
Caption:=aTableInfo.Tablename;
OnResize:=@OnFormResize;

Position := poScreenCenter;
Height:= 550;
Expand Down Expand Up @@ -1261,11 +1368,13 @@ constructor TAsDbForm.Create(aDbInfo: TAsDbConnectionInfo; aSchema: string;
FDataGrid := TDBGrid.Create(FGridNavGroup);
FDataGrid.Parent := FGridNavGroup;
FDataGrid.Align:=alClient;
FDataGrid.Font.Size:=10;
FDataGrid.DataSource := FDataObject.DataSource;
FDataGrid.Options:=FDataGrid.Options+[dgRowSelect];
FDataGrid.TitleStyle:=tsNative;
FDataGrid.OnDrawColumnCell:=@OnDBGridDrawColumnCell;


FFRPrintGrid := TfrPrintGrid.Create(Self);
FFRPrintGrid.DBGrid := FDataGrid;
FFRPrintGrid.Caption:= FTableInfo.Tablename;
Expand Down Expand Up @@ -1307,10 +1416,7 @@ procedure TAsDbForm.OpenData;
begin
FDataObject.SqlQuery:=FSqlQuery;
FDataObject.Query.Open;
for I:=0 to FDataGrid.Columns.Count-1 do
begin
FDataGrid.Columns[I].Width:=FControlWidth;
end;
FDataGrid.AutoAdjustColumns;

if FQuickSearchFieldsCmb <> nil then
begin
Expand Down
Loading

0 comments on commit 19bb0d1

Please sign in to comment.