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

    +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
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    procedure TCommonFineEdit.SetTopControls;
    begin
      if beSummHist.Visible then
        SummEdit.Width := 92
      else
        SummEdit.Width := 108;
      if VarToInt(Oper.OperationType) in [otFine, otNoAgreeFine, otPayFine, otPayFineCorrect] then
        begin
          NameEdit.Top := 16;
          Label1.Top := NameEdit.Top+3;
          PODateEdit.Top := 47;
          AccountDateJvDateEdit.Top := PODateEdit.Top;
          label3.Top := PODateEdit.Top+3;
          lPODate.Top := PODateEdit.Top+3;
          beSummHist.Top := 77;
          SummEdit.Top := 78;
          POSummEdit.Top := SummEdit.Top;
          label12.Top := SummEdit.Top+3;
          lPOSumm.Top := SummEdit.Top+3;
          StateComboBox.Top := 109;
          label4.Top := StateComboBox.Top+3;
          InspectNameEdit.Top := 140;
          InspectNameLabel.Top := InspectNameEdit.Top+3;
          CommentEdit.Top := 171;
          label2.Top := CommentEdit.Top+3;
          if ftSale then
          begin
            RateNameEdit.Top := 202;
            lRate.Top := RateNameEdit.Top+3;
            BasePriceEdit.Top := 233;
            PaySummMoneyEdit.Top := BasePriceEdit.Top;
            lMoney.Top := BasePriceEdit.Top+3;
            lBasePrice.Top := BasePriceEdit.Top+3;
            Height := 368;
          end else
            Height := 310;
        end
    ...

    Запостил: Umak, 11 Июня 2010

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

    • После нас хоть потоп...
      Ответить
    • сейчас кому поручено чуть поменять интерфейс боится сломать форму. Шеф назвал код "чайная церемония" - выверено с точность до пиксела.
      Ответить
    • показать все, что скрытоА чё, у меня код реакции на изменение размера примерно так и выглядит. Ну только в паре мест вместо цифры константа. Только у меня нету свободного места между компонентами. Это позволяет мне безболезненно заблокировать wm_EraseBkGnd, из-за которого всё мерцает при изменении размера.
      Ответить
      • На чистом winapi пишешь? откуда мерцание то? Не выход контролы лепить, надо причину найти.
        Выравнивание (Align) + якоря (Anchors) поудобнее если в дизайне строить.
        Если динамически тоже.
        Ответить
        • А якоря всё равно не позволят сделать компонент, который, например, всегда по размеру будет ровно на половину формы.
          Ответить
          • Погляди в сторону TGridPanel (Delphi 2007).
            Ответить
          • еще + панели, для примера накодил по бырому
            procedure TForm1.FormResize(Sender: TObject);
            begin
              FPanel1.Width:=ClientWidth div 2;
            end;
            
            procedure TForm1.FormCreate(Sender: TObject);
            var T1,T2:Integer;
              Memo:TMemo;
            function AddPanel(aAlign:TAlign):TPanel;
            begin
              Result:=TPanel.Create(self);
              Result.BevelOuter:=bvNone;
              Result.Align:=aAlign;
              Result.Parent:=self;
            end;
            procedure AddControl(ctrl:TControl;Panel:TPanel; var aTop:Integer);
            begin
              ctrl.Top:=aTop;
              ctrl.Left:=8;
              ctrl.Width:=Panel.Width-16;
              ctrl.Anchors:=[akLeft,akTop,akRight];
              ctrl.Parent:=Panel;
              inc(aTop,ctrl.Height+3);
            end;
            function CreateLabel(s:TCaption):TLabel;
            begin
              Result:=TLabel.Create(self);
              Result.Color:=clInfoBk;//чтоб мерцало
              Result.Caption:=s;
            end;
            begin
              t1:=8;
              t2:=8;
              FPanel1:=AddPanel(alTop);
              FPanel1.Caption:='Демо: 2 колонки';
              FPanel1.Height:=22;//кал
              FPanel1:=AddPanel(alLeft);
              FPanel2:=AddPanel(alClient);
              FormResize(nil);
              AddControl(CreateLabel('Чета:'),FPanel1,t1);
              AddControl(TEdit.Create(self),FPanel1,t1);
              AddControl(CreateLabel('Гдета:'),FPanel1,t1);
              AddControl(TEdit.Create(self),FPanel1,t1);
              AddControl(CreateLabel('Комент:'),FPanel1,t1);
              Memo:=TMemo.Create(self);
              AddControl(Memo,FPanel1,t1);
              Memo.Anchors:=[akLeft,akTop,akRight,akBottom];
              Memo.Height:=FPanel1.ClientHeight-Memo.Top-3;
              AddControl(CreateLabel('Бла блабла:'),FPanel2,t2);
              AddControl(TEdit.Create(self),FPanel2,t2);
              AddControl(CreateLabel('Бла блабла:'),FPanel2,t2);
              AddControl(TEdit.Create(self),FPanel2,t2);
              AddControl(CreateLabel('Бла блабла:'),FPanel2,t2);
              AddControl(TEdit.Create(self),FPanel2,t2);
              AddControl(CreateLabel('Бла блабла:'),FPanel2,t2);
              AddControl(TEdit.Create(self),FPanel2,t2);
              AddControl(TButton.Create(self),FPanel2,t2);
            end;
            Ответить
    • WTF? похоже на хрень которую генерит визард по published пропертям, только ручной китайской работы
      Ответить
    • vanished
      Ответить

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