ListBox 問題 |
答題得分者是:hagar
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
如下的可以嗎?
首先將 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 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
感謝兩位版主的指導, 我試作了 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; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |