1. Pascal / Говнокод #5483

    +99

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    procedure TForm1.Timer1Timer(Sender: TObject);
    var Ras, MinRas, MinC, Comp: Integer;
    begin
    Ras:=0;
    MinC:=0;
    MinRas:=0;      // всё по нулям
     for Comp:=0 to ComponentCount-1 do // цикл по всем компонентам
      begin
       IF (Components[Comp] is TPanel) and (Components[Comp] <> Panel1) and (Panel1.Left>TPanel(Components[Comp]).Left) then
                     Ras:=Panel1.Left-TPanel(Components[Comp]).Left
                     else
       IF (Components[Comp] is TPanel) and (Components[Comp] <> Panel1) and (Panel1.Left<TPanel(Components[Comp]).Left) then
                     Ras:=TPanel(Components[Comp]).Left-Panel1.Left;
       If Ras < MinRas
        then begin
                MinRas:= Ras;  //устанавливаем переменные этой панельки за основные
                MinC:= Comp;
        end;
      end;
       if Panel1.top<(TPanel(Components[MinC]).Top-TPanel(Components[MinC]).Height) then
                    Panel1.Top:=Panel1.Top+3;    //если панель ниже то допрыгиваем
      PROBEL:=Panel1.Top=TPanel(Components[MinC]).Top-TPanel(Components[MinC]).Height
      end;

    какое-то панельное безумие

    Запостил: bugmenot, 02 Февраля 2011

    Комментарии (17) RSS

    • в дельфи расположение элементов устанавливается попиксельно?
      Ответить
      • а как еще-то? это ж ГУИ
        Ответить
      • Нет, блин, повоксельно!
        Ответить
        • В нормальных оконных системах сделано в относительных единицах (часто в плавющих числах).
          Ответить
          • Относительно размера экрана?
            То есть увеличил разрешение - и окно всё равно занимает тот же процент площади, что и раньше? А в чём удобство?
            Ответить
            • Как бы в этом и удобство. В лёгкости масштабирования и не зависимости от разрешений экрана.
              Ответить
            • очень удобно подгонять форму под разрешение. Неужто не знакома ситуация, когда у товарища с 640х480 форма не влазит?
              Ответить
              • И оно само шрифты ужимает?
                Ответить
                • не забывайте, что размер шрифта считается не в пикселях, а в пунктах, не зависящих от разрешения экрана
                  Ответить
                  • Пункты в дюймах. Следовательно размер шрифта в пикселях изменится только при изменении  DPI. Разрешение тут не при чем.
                    Ответить
              • особенно весело с растровыми картинками:(
                Ответить
                • c картинками сложнее (
                  я обычно использую картинки побольше, а при отображении подгоняю размеры поменьше
                  Ответить
          • в нормальных оконных системах есть менеджеры компоновки
            Ответить
    • Вижу откровенное говно только в именах Panel1 и PROBEL
      ну и обходить правильнее не по .Components[] а по .Controls[]
      Ответить

    Добавить комментарий