在 DBGrid 的 OnMouseMove 寫入
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var pt: TGridcoord; begin // 判別滑鼠是否移動到標題列 // 若是, 則滑鼠為手指形, // 否則為預設 pt := DBGrid1.MouseCoord(x, y); if pt.y=0 then DBGrid1.Cursor:=crHandPoint else DBGrid1.Cursor:=crDefault; end;
再在 OnTitleClick 寫入
procedure TForm1.DBGrid1TitleClick(Column: TColumn); {$J+} // 指定為靜態變數 // 做為記錄前次滑鼠點擊的欄位 const PreviousColumnIndex : integer = 0; {$J-} begin if DBGrid1.DataSource.DataSet is TCustomADODataSet then with TCustomADODataSet(DBGrid1.DataSource.DataSet) do begin try DBGrid1.Columns[PreviousColumnIndex].title.Font.Style := DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold]; except end; Column.title.Font.Style := Column.title.Font.Style + [fsBold]; DBGrid1.Columns[PreviousColumnIndex].Title.Caption := StringReplace(DBGrid1.Columns[PreviousColumnIndex].Title.Caption,' ▲', '',[rfReplaceAll]); DBGrid1.Columns[PreviousColumnIndex].Title.Caption := StringReplace(DBGrid1.Columns[PreviousColumnIndex].Title.Caption,' ▼', '',[rfReplaceAll]); PreviousColumnIndex := Column.Index; if (Pos(Column.Field.FieldName, Sort)=1) and (Pos(' DESC',Sort)=0) then begin Sort := Column.Field.FieldName + ' DESC'; DBGrid1.Columns[PreviousColumnIndex].Title.Caption := DBGrid1.Columns[PreviousColumnIndex].Title.Caption + ' ▼'; end else begin Sort := Column.Field.FieldName + ' ASC'; DBGrid1.Columns[PreviousColumnIndex].Title.Caption := DBGrid1.Columns[PreviousColumnIndex].Title.Caption + ' ▲'; end; end; end;
自己再自行做變化.
沒有留言:
張貼留言