Пропорциональный ресайз форм
От: defrag  
Дата: 01.12.04 07:06
Оценка:
О, всезнающий All

Нужно чтобы изменение размеров формы происходило пропорционально, точнее чтобы пропорционально изменялось одно из окон на форме, а форма под него подстраивалась


procedure TForm1.OnCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
var
  w, h: longint;
begin
  if Height <> NewHeight then
  begin
    h := NewHeight - 210;
    w := round(h / ih * iw);
    NewWidth := w + 12;
    Resize := true;
    exit;
  end;


  if Width <> NewWidth then
  begin
    w := NewWidth - 12;
    h := round(w / iw * ih);
    NewHeight := h + 210;
    Resize := true;
    exit;
  end;
end;


Пыервый блок должен срабатывать, когда мы производим вертикальное изменение размеров, второй — при горизонтальном изменении.

Так вот, когда делаю вертикальный ресайз мышкой — все замечательно, плавно и красиво.
А когда начинаю горизонтальный ресайз, то начинаются глюкобаги. Размеры формы меняются скачкообразно: первоначальный размер — текущее положение мыши — первоначальный размер — текущее положение мыши

Что за грабли?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.