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

FM 的 TListbox 轉向問題

答題得分者是:Main Chen
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2014-02-27 00:26:23 IP:118.169.xxx.xxx 未訂閱
各位好, 

由於文字不好說明, 弄了一張圖直接表達我的問題
圖片中的橫式右側是一個 TListbox, 有5個 TlistboxItem
如果手機轉向為直式, 如何變成圖右的型式
已經找了兩天網路上的資源, 實在找不到, 只好求助各位啦
編輯記錄
P.D. 重新編輯於 2014-02-27 00:26:51, 註解 無‧
P.D. 重新編輯於 2014-02-27 00:28:17, 註解 無‧
JamesJuan
中階會員


發表:2
回覆:76
積分:80
註冊:2003-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2014-02-27 14:18:21 IP:114.32.xxx.xxx 未訂閱
版大您好
不知道是不是限制螢幕不能旋轉就能滿足你的需要?
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2014-02-28 00:32:15 IP:118.169.xxx.xxx 未訂閱
您好:

如果限制螢幕的話, 我就不會提這個問題啦!

===================引 用 JamesJuan 文 章===================
版大您好
不知道是不是限制螢幕不能旋轉就能滿足你的需要?
JamesJuan
中階會員


發表:2
回覆:76
積分:80
註冊:2003-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2014-03-10 16:32:55 IP:114.32.xxx.xxx 未訂閱
PD 版大您好
不知道您是否需要的是否像這樣?

P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2014-03-12 01:19:00 IP:118.169.xxx.xxx 未訂閱
沒錯, 這就是我想要的結果, 不知 James 兄可指點一二?
另外, 不知這可否捲動?
===================引 用 JamesJuan 文 章===================
PD 版大您好
不知道您是否需要的是否像這樣?

JamesJuan
中階會員


發表:2
回覆:76
積分:80
註冊:2003-04-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2014-03-13 09:28:54 IP:114.32.xxx.xxx 未訂閱
Main Chen
高階會員


發表:29
回覆:135
積分:127
註冊:2002-10-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2014-03-13 11:44:13 IP:112.104.xxx.xxx 訂閱
 這裡有一個用 TListBox 做的例子,也能參考一下:

pan.baidu.com/s/1eQGGgIu

編輯記錄
Main Chen 重新編輯於 2014-03-13 11:45:03, 註解 無‧
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2014-03-14 09:39:46 IP:118.160.xxx.xxx 未訂閱
感謝提供資料, 
經下載測試, 碓實可以做到我想要的功能, 但有一個問題就是
如果是橫屏 放在右邊(alrightalign) 有5個listboxitem 分別是
1
2
3
4
5
改為直屏, 放在底端(albottomalign), 會變成
12345
但我想要的位置是
54321
===================引 用 Main Chen 文 章===================
這裡有一個用 TListBox 做的例子,也能參考一下:

pan.baidu.com/s/1eQGGgIu

P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2014-03-14 09:47:31 IP:118.160.xxx.xxx 未訂閱
感謝分享

但我依網址去下載, 發現, 原本的 .7z檔是17K, 但選下載時變成 324K,
我下載後嘗試解開, 是exe格式, 進行安裝, 結果被裝了一堆該網址的軟體(而且下載時會出現18禁的網頁),
是否方便的話, 可以mail給我呢? 謝謝

download@mail.3ipd.com.tw

===================引 用 JamesJuan 文 章===================
PD 版大您好

我把程式碼上傳到下述網址了
www.mirrorcreator.com/files/0GRBT24U/OrientationTest.7z_links




Main Chen
高階會員


發表:29
回覆:135
積分:127
註冊:2002-10-07

發送簡訊給我
#10 引用回覆 回覆 發表時間:2014-03-14 10:42:06 IP:220.134.xxx.xxx 訂閱
加 Sort 功能就行了。

1. 在每個 Item.tag 設定 1 ~ 5 的數字。
2. 在 ListBox.OnCompare 加入下面程式:

procedure TForm1.FormResize(Sender: TObject);
begin
.....略.....
加下面二行
ListBox1.Sorted := False;
ListBox1.Sorted := True;
end;
procedure TForm1.ListBox1Compare(Item1, Item2: TListBoxItem;
var Result: Integer);
begin
if Width > Height then
begin
if Item1.Tag = Item2.Tag then Result := EqualsValue else
if Item1.Tag < Item2.Tag then Result := LessThanValue else
Result := GreaterThanValue;
end
else
begin
if Item1.Tag = Item2.Tag then Result := EqualsValue else
if Item1.Tag > Item2.Tag then Result := LessThanValue else
Result := GreaterThanValue;
end;
end;
===================引 用 P.D. 文 章===================
感謝提供資料,
經下載測試, 碓實可以做到我想要的功能, 但有一個問題就是
如果是橫屏 放在右邊(alrightalign) 有5個listboxitem 分別是
1
2
3
4
5
改為直屏, 放在底端(albottomalign), 會變成
12345
但我想要的位置是
54321
===================引 用 Main Chen 文 章===================
這裡有一個用 TListBox 做的例子,也能參考一下:

pan.baidu.com/s/1eQGGgIu

編輯記錄
Main Chen 重新編輯於 2014-03-14 11:33:39, 註解 無‧
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#11 引用回覆 回覆 發表時間:2014-03-15 12:22:25 IP:118.169.xxx.xxx 未訂閱
感謝 Chen 提供的方法, 經測試可以做到, 不過實測上我想修正一點

如果一開始 ListBox 不指定 sort, 而是透過後製指定, 手機翻幾次後, 整個Items 位置會玩大風吹
所以我一開始就指定sort, 然後後製不再指定, 這個問題就解決了

但現在又出現一個問題, 就是手機翻轉後, Items 有按順序出現, 但ListBox 會出現一大段空白, 如下示意圖
有時出現 ItemIndex= first 有時出現在 ItemIndex = last, 我試著在轉向時指定 ItemIndex 位置並沒有用,
所以還要再研究如何解決

===================引 用 Main Chen 文 章===================
加 Sort 功能就行了。

1. 在每個 Item.tag 設定 1 ~ 5 的數字。
2. 在 ListBox.OnCompare 加入下面程式:

procedure TForm1.FormResize(Sender: TObject);
begin
.....略.....
加下面二行
ListBox1.Sorted := False;
ListBox1.Sorted := True;
end;
procedure TForm1.ListBox1Compare(Item1, Item2: TListBoxItem;
var Result: Integer);
begin
if Width > Height then
begin
if Item1.Tag = Item2.Tag then Result := EqualsValue else
if Item1.Tag < Item2.Tag then Result := LessThanValue else
Result := GreaterThanValue;
end
else
begin
if Item1.Tag = Item2.Tag then Result := EqualsValue else
if Item1.Tag > Item2.Tag then Result := LessThanValue else
Result := GreaterThanValue;
end;
end;
編輯記錄
P.D. 重新編輯於 2014-03-15 12:25:24, 註解 無‧
Main Chen
高階會員


發表:29
回覆:135
積分:127
註冊:2002-10-07

發送簡訊給我
#12 引用回覆 回覆 發表時間:2014-03-21 08:05:49 IP:112.104.xxx.xxx 訂閱
可以取得螢幕 Width 並除以 5 後,再用迴圈去設定每一個 TListBoxItem 的 Width(橫屏) 或 Height(直屏) 就可以了。


===================引 用 P.D. 文 章===================
感謝 Chen 提供的方法, 經測試可以做到, 不過實測上我想修正一點

如果一開始 ListBox 不指定 sort, 而是透過後製指定, 手機翻幾次後, 整個Items 位置會玩大風吹
所以我一開始就指定sort, 然後後製不再指定, 這個問題就解決了

但現在又出現一個問題, 就是手機翻轉後, Items 有按順序出現, 但ListBox 會出現一大段空白, 如下示意圖
有時出現 ItemIndex= first 有時出現在 ItemIndex = last, 我試著在轉向時指定 ItemIndex 位置並沒有用,
所以還要再研究如何解決

P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#13 引用回覆 回覆 發表時間:2014-03-24 15:55:55 IP:59.120.xxx.xxx 未訂閱
感謝 Chen'r 的提供方式, 

手機轉是一個最基本的需求, 不過我發現 xe5 在這方面做的並不好, 如果每一項都還要我們去計算導公式, 那寫程式太累了,
最好就是拉進來這些基本功能就具備, 開發的速度才會快, 在Android 其他開發語言, 我看很多設計都能做到,
但我花在這裡的時間已經好幾個月, 都不能達成我想要做到的結果,
我只好暫時放棄,我現在把app 改為直向, 而且不能旋轉, 就固定一個地方不動,
期待 xe6 能改善這些地方
系統時間:2024-04-25 19:44:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!