全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1036
推到 Plurk!
推到 Facebook!

請問如何控制多個按鈕位置

尚未結案
jbinfo
一般會員


發表:9
回覆:25
積分:16
註冊:2004-05-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-25 02:01:45 IP:61.60.xxx.xxx 未訂閱
煩請各位大大解惑,我在一個from上有十個按鈕,這十個按鈕可能會在不同時上產生,所以順序不一定,我要如何讓按鈕對齊排列(二列即可),而按鈕可能會關閉或隱藏,後面的在補上來
  pTJBButton=^TJBButton;
  TJBButton = Record
    fButton:TButton;
    fFlag:Integer; //-->記錄Button的編號
    LParam:Pointer; //-->右串列
    RParam:Pointer; //-->左串列
  end;
procedure TfmMain.FormActivate(Sender: TObject);
begin
     ListData:=TList.Create ;     
end;
//在動態產生按鈕
procedure TfmMain.DoShowMainFram;
var
   MainFramButton:TButton;
begin
     if Not Assigned(fm_Fram) then
     begin
          Application.CreateForm(Tfm_Fram,fm_Fram);
          fm_Fram.Show ;
     end;
     New(SetButtonP);
     MainFramButton:=TButton.Create(Self);
     MainFramButton.Width :=ButtonWidth;
     MainFramButton.Height :=ButtonHeight;
     SetButtonP^.fButton :=@MainFramButton;
     ListData.Add(SetButtonP);
     SetButtonWith;
end;  
procedure TfmMain.SetButtonWith;
var
   fIIndex,fNext:Integer;
   fButtonTop,fButtonLeft:Integer; //-->按鈕的位子
   fLeftChain:Integer;             //-->找出上個按鈕的位子
begin
     For fIIndex:=0 to ListData.Count-1do
     begin //-->如果按鈕沒有柀釋放
          if Assigned(pTJBButton(ListData.Items[fIIndex])^.fButton) then
          begin
               if Not Assigned(pTJBButton(ListData.Items[fIIndex])^.LParam) then
               begin
                    if Not( ListData.Count =1) then
                    begin
                         pTJBButton(ListData.Items[fIIndex])^.RParam :=@pTJBButton(ListData.Items[fIIndex 1])^.fFlag;
                         pTJBButton(ListData.Items[fIIndex 1])^.LParam:=@pTJBButton(ListData.Items[fIIndex])^.fFlag;
                    end;
                    fButtonTop :=Panel3.BevelWidth   Panel3.Top ;
                    fButtonLeft:=Panel3.BevelWidth ;
                    pTJBButton(ListData.Items[fIIndex])^.fButton.Top :=fButtonTop ;//<------執行到這裡一定會出現錯誤
                    pTJBButton(ListData.Items[fIIndex])^.fButton.Left :=fButtonLeft ;
               end ; 
          end;
     end;
end;
不知道各位大大是否有什麼好的方法或可以指正程式錯誤的地方....謝謝
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-25 11:50:26 IP:61.64.xxx.xxx 未訂閱
修正紅字處就不會當了.
  pTJBButton=^TJBButton;
  TJBButton = Record
    fButton:TButton;
    fFlag:Integer; //-->記錄Button的編號
    LParam:Pointer; //-->右串列
    RParam:Pointer; //-->左串列
  end;
procedure TfmMain.FormActivate(Sender: TObject);
begin
     ListData:=TList.Create ;     
end;
//在動態產生按鈕
procedure TfmMain.DoShowMainFram;
var
   MainFramButton:TButton;
begin
     if Not Assigned(fm_Fram) then
     begin
          Application.CreateForm(Tfm_Fram,fm_Fram);
          fm_Fram.Show ;
     end;
     New(SetButtonP);
     MainFramButton:=TButton.Create(Self);
     MainFramButton.Width :=ButtonWidth;
     MainFramButton.Height :=ButtonHeight;
     //SetButtonP^.fButton :=@MainFramButton;
     SetButtonP^.fButton :=MainFramButton;
     ListData.Add(SetButtonP);
     SetButtonWith;
end;  
procedure TfmMain.SetButtonWith;
var
   fIIndex,fNext:Integer;
   fButtonTop,fButtonLeft:Integer; //-->按鈕的位子
   fLeftChain:Integer;             //-->找出上個按鈕的位子
begin
     For fIIndex:=0 to ListData.Count-1do
     begin //-->如果按鈕沒有柀釋放
          if Assigned(pTJBButton(ListData.Items[fIIndex])^.fButton) then
          begin
               if Not Assigned(pTJBButton(ListData.Items[fIIndex])^.LParam) then
               begin
                    if Not( ListData.Count =1) then
                    begin
                         pTJBButton(ListData.Items[fIIndex])^.RParam :=@pTJBButton(ListData.Items[fIIndex 1])^.fFlag;
                         pTJBButton(ListData.Items[fIIndex 1])^.LParam:=@pTJBButton(ListData.Items[fIIndex])^.fFlag;
                    end;
                    fButtonTop :=Panel3.BevelWidth   Panel3.Top ;
                    fButtonLeft:=Panel3.BevelWidth ;
                    pTJBButton(ListData.Items[fIIndex])^.fButton.Top :=fButtonTop ;//<------執行到這裡一定會出現錯誤
                    pTJBButton(ListData.Items[fIIndex])^.fButton.Left :=fButtonLeft ;
               end ; 
          end;
     end;
end;
系統時間:2024-07-03 7:58:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!