請問如何控制多個按鈕位置 |
尚未結案
|
jbinfo
一般會員 發表:9 回覆:25 積分:16 註冊:2004-05-10 發送簡訊給我 |
煩請各位大大解惑,我在一個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 發送簡訊給我 |
修正紅字處就不會當了.
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; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |