Предложения в Fr5

отредактировано 03:20 Раздел: FastReport 4.0
Очередной раз предлагаю облегчить нам (пользователям) жизнь: добавить в дизайнер 2 кнопки -
расположить выделенные объекты один рядом с другим и сделать объект по ширине как остальные выделенные. При каждом новом релизе приходится вносить измнения.
function TfrxDesignerForm.FindMinLeft(var aMv:array  of TfrxView;tNo:TfrxComponent):TfrxView;
var i:integer;
    lf:double;
    t: TfrxView;
function FindInaMv(aMv:array  of TfrxView;n:TfrxView):boolean;
var i:integer;
begin
 Result:=false;
 for i:=0 to High(aMv) do
  if aMv[i]=n then
   begin
    Result:=true;
    EXIT;
   end;
end;
begin
  Result:=NIL;
  lf:=9999999;
  for i := 0 to FSelectedObjects.Count - 1 do
  begin
    t := FSelectedObjects[i];
    if not (rfDontMove in t.Restrictions)and (t<>tNo) and
      (lf>TMfrxView(t).left) and not FindInaMv(aMv,t) then
        begin
         Result:=t;
         lf:=TMfrxView(t).left;
        end;
  end;
end;

procedure TfrxDesignerForm.acSidebySideExecute(Sender: TObject); // рядом друг с другом 
var w:double;
    aMv:array  of TfrxView;
    t: TfrxView;

begin
  if (FSelectedObjects.Count  < 2) then Exit;
//  BeforeChange;
  w:=0;
  SetLength(aMv,0);
  t:=TfrxView(55);
  while (t<>NIL) do
   begin
    t:=FindMinLeft(aMv,nil);
    if (t<>NIL) then
    with TMfrxView(t) do
     begin
      left:=w;
      w:=w+TMfrxView(t).width;
      SetLength(aMv,High(aMv)+2);
      aMv[High(aMv)]:=t;
     end;
   end;
  Modified := True;
end;

procedure TfrxDesignerForm.acW_WWExecute(Sender: TObject); // ширина последнего выделенного= сумма других выделенных
var
  i: Integer;
  c0: TfrxComponent;
  x:Double;
    aMv:array  of TfrxView;
    begin
  if FSelectedObjects.Count < 2 then Exit;
  c0 := FSelectedObjects[FSelectedObjects.Count-1];
  if (rfDontSize in c0.Restrictions) then exit;
  x:=0;
  for i := 0 to FSelectedObjects.Count - 2 do
    x:=x+TfrxComponent(FSelectedObjects[i]).width;
  c0.width:=x;
  c0.left:=TfrxComponent(FindMinLeft(amv,c0)).left ;
  Modified := True;
end;

Комментарии

  • отредактировано 03:20
    Предложение для модуля frxGZip:
    Пожалуйста, сделайте функции чтобы можно было сжимать несколько файлов в один ZIP файл и чтобы потом этот файл успешно открывался в WinRar! (а также декомпресионную функцию таких файлов).
    Кстати может стоит перейти на GZip 1.2.4?
  • Stalker4Stalker4 123
    отредактировано 03:20
    mcio написал: »
    Предложение для модуля frxGZip:
    Пожалуйста, сделайте функции чтобы можно было сжимать несколько файлов в один ZIP файл и чтобы потом этот файл успешно открывался в WinRar! (а также декомпресионную функцию таких файлов).
    Кстати может стоит перейти на GZip 1.2.4?
    Ну если это там реализуют будет конечно хорошо, а пока можно воспользоваться библиотекой frxVCLZipCompressor (брать на страничке в моей подписи или в бинарной конфе). Она основана на библиотеке VCLZip и создает обычные zip-архивы. frxVCLZipCompressor выполняет те же функции, что и frxGZip плюс у нее есть пара методов для компресии/декомпресии потоков которые можно дергать прямо из скрипта.
  • отредактировано 03:20
    По моему всетаки эта библиотека не делает то о чём я прошу.
  • отредактировано 03:20
    Также просьба чтобы frxGZip DecompressFile умел расжимать ужатые winrar архивы формата zip, а не только gzip.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.