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

ListBox 問題

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


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-01 00:51:27 IP:210.85.xxx.xxx 未訂閱
請問各位! 我要做一個功能 ListBox(或FlieListBox)內有不定的檔案資料, 我用一個迴圈來讀取內部每一個item, 當讀取第一個item時, 在listbox方框內的第一個itemlist要呈現藍底白字(反白)的標示, 進行要第二個時就在第二個itemlist顯示反白, 同時第一個即回復到標準, 依此類推到最後一個, 但要考慮可能10個或20個 所以要能自動捲動, 這樣的功能, 是否有網友有設計的經驗可以提供 謝謝!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-01 07:38:18 IP:211.22.xxx.xxx 未訂閱
如下的可以嗎? 首先將 ListBox1 的 Style 屬性設為 lbOwnerDrawFixed
var CurrIndex: Integer = 0; // 現在的 ListBox1 的 ItemIndex 值
   
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  if Index = CurrIndex then begin
    ListBox1.Canvas.Brush.Color := clBlue;
    ListBox1.Canvas.Font.Color := clWhite;
    ListBox1.Canvas.FillRect(Rect);
  end else begin
    ListBox1.Canvas.Brush.Color := clWhite;
    ListBox1.Canvas.Font.Color := clBlack;
    ListBox1.Canvas.FillRect(Rect);
  end;
  ListBox1.Canvas.TextOut(Rect.Left 2, Rect.Top 2, ListBox1.Items[Index]);
end;
   
procedure TForm1.Button1Click(Sender: TObject);
begin
  Inc(CurrIndex); // 這裏改變了 ListBox1 的 ItemIndex 值
  if CurrIndex = ListBox1.Items.Count then
    CurrIndex := 0;
  ListBox1.Repaint; // 重繪 ListBox1
end;
-- Everything I say is a lie. 發表人 - hagar 於 2002/10/01 07:39:51
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-01 07:48:40 IP:61.219.xxx.xxx 未訂閱
只要改變listbox之itemindex就自然會反白,超過範圍也會自動捲動 試試這個
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
  for i:=0 to listbox1.Items.Count -1 do begin
    listbox1.ItemIndex:=i;
    sleep(1000);
  end;
end;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-01 07:57:29 IP:211.22.xxx.xxx 未訂閱
前輩出手就是不一樣 真是見醜了! :) -- Everything I say is a lie.
P.D.
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-01 11:26:24 IP:210.85.xxx.xxx 未訂閱
感謝兩位版主的指導, 我試作了 hager 版主的功能的確可以做到我想要的功能, 然後我再試作 ccchen 版主的寫法, 發生了一點點的小問題, 就是指標的確可以往下移動, 但是僅是一個方框往下而不是反白, 然後我用一個小ap(只建一個ListBox與Button)實作, 可以反白往下沒有問題, 我不知道是那邊有疏忽掉, 以下是我部份程式, ps:我的ListBox是由一個TFileListBox用drop方式把檔案拖到該ListBox內, 動態建立 ListBox的 Item    
     for i:= 0 to lbxComb.Items.Count-1 do begin
         lbxComb.SetFocus;
         lbxComb.ItemIndex:= i;
         lbxComb.Repaint; -->此行我試過 update, reflesh 都一樣
         Application.ProcessMessages;
         try
            dFile:= Label_Comb.Caption '\' lbxComb.Items.Strings[i];
            label_Combmsg.Caption:= '現正合併 ' dFile;
            label_Combmsg.Update;
            if ExtractFileExt(dFile)='.DBF' then begin
               Table_Comb.Close;
               Table_Comb.DatabaseName:= ExtractFilePath(dFile);
               Table_Comb.TableType:= ttDbase;
               Table_Comb.TableName:= ExtractFileName(dFile);
               Table_Comb.Exclusive:= True;
            end
            else begin
               Table_Comb.Close;
               Table_Comb.DatabaseName:= ExtractFilePath(dFile);
               Table_Comb.TableType:= ttParadox;
               Table_Comb.TableName:= ExtractFileName(dFile);
               Table_Comb.Exclusive:= True;
            end;                // 開始轉資料
            if rbtnAppend.Checked then BatchMove1.Mode:= batAppend
            else BatchMove1.Mode:= batAppendUpdate;
            BatchMove1.Execute;
         except
         end;
     end;
系統時間:2024-04-30 15:23:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!