Хотелки
Во превых очень бы хотелось.
когда открываешь окно диалога выражение
чтобы сохранялись таб ордеры и где ты последний раз был.
а то приходится открывать закладку закрывать деревья для запросов
находить нужный в котором ты был.
встаем на следующий элемент и все повторяется снова.
в окне редактора текста Drog drag если бы работал из дерева данных.
Но окно открывается модально.
когда открываешь окно диалога выражение
чтобы сохранялись таб ордеры и где ты последний раз был.
а то приходится открывать закладку закрывать деревья для запросов
находить нужный в котором ты был.
встаем на следующий элемент и все повторяется снова.
в окне редактора текста Drog drag если бы работал из дерева данных.
Но окно открывается модально.
Комментарии
кликаете в бедн жмете кнопку выравнить в лево все елементы вырвниваются. как в 2.
function TfrxDesignerForm.IsBandsSelect(var Value: TfrxComponent): Boolean;
var
i: Integer;
begin
Result := False;
Value := nil;
for i := 0 to SelectedObjects.Count - 1 do
if TObject(SelectedObjects) is TfrxBand then
begin
Value := SelectedObjects;
Result := True;
break;
end;
end;
procedure TfrxDesignerForm.AlignLeftsBClick(Sender: TObject);
var
i: Integer;
c0, c: TfrxComponent;
//kkkkk start
i1: Integer;
Lobj :array of TStringList;
bAdd : Boolean;
FLMargin :Integer;
t, t1: TfrxComponent;
x, y: Extended;
band: TfrxComponent;
begin
//kkkk
// BeforeChange;
if IsBandsSelect(band) then
begin
SetLength(Lobj, 1);
I := Low(Lobj);
Lobj := TStringList.Create;
Lobj.Sorted := True;
Lobj.Duplicates := dupAccept;
for i := 0 to Objects.Count - 1 do
begin
t := Objects;
if (t.AbsTop >= band.AbsTop) and (t.AbsTop + t.Height <= band.AbsTop + band.Height) and
// (t.Typ <> gtBand) then
// ( t.ClassType <> TfrxBand) then
( Not( t is TfrxBand)) then
begin
bAdd:= False;
for I1 := Low(Lobj) to High(Lobj) do
begin
if Lobj[i1].Count <= 0 then
continue;
t1 := TfrxView(Lobj[i1].Objects[0] );
if ((t.AbsTop < t1.AbsTop+t1.Height) and (t.AbsTop >= t1.AbsTop) ) OR
((t.AbsTop+t.Height < t1.AbsTop+t1.Height) and (t.AbsTop+t.Height > t1.AbsTop) ) then
begin
Lobj[i1].AddObject(Format('%4.4f', [t.Left]), t);
bAdd:= True;
break;
end;
end;
if (Not bAdd) then
begin
if High(Lobj) = Low(Lobj) then
i1 := Low(Lobj) else i1 := High(Lobj)-1;
if (Lobj[i1].Count = 0) then
begin
Lobj[i1].AddObject(Format('%4.4f', [t.Left]), t);
bAdd:= True;
end
end;
if Not bAdd then
begin
i1:= High(Lobj)+1;
SetLength(Lobj, i1+1);
Lobj[i1] := TStringList.Create;
Lobj[i1].Sorted := True;
Lobj[i1].Duplicates := dupAccept;
Lobj[i1].AddObject(Format('%4.4f', [t.Left]), t);
end;
end;
end;
for I1 := Low(Lobj) to High(Lobj) do
begin
if Lobj[i1].Count <= 0 then
continue;
t := TfrxView(Lobj[i1].Objects[0]);
x:= TfrxReportPage(FPage).LeftMargin;
// x:= FLMargin;
y:= t.Top;
for i := 0 to Lobj[i1].Count - 1 do
begin
t := TfrxView(Lobj[i1].Objects);
// if (t.Restrictions and frrfDontMove) = 0 then
if Not(rfDontModify in t.Restrictions ) then
begin
t.Left := x;
t.Top := y;
end;
x := x + t.Width;
end;
end;
for I := Low(Lobj) to High(Lobj) do
Lobj.Free;
SetLength(Lobj, 0);
// PageView.GetMultipleSelected;
// RedrawPage;
Modified := True;
Exit;
end;
if FSelectedObjects.Count < 2 then Exit;
c0 := FSelectedObjects[0];
for i := 1 to FSelectedObjects.Count - 1 do
begin
c := FSelectedObjects;
if not (rfDontMove in c.Restrictions) then
c.Left := c0.Left;
end;
Modified := True;
end;