Selam!
Dbgrid'de multiselect-i shift ve yon tuslari ile degilde mesela F2 tusu ile nasil yapabilirm
dbgrid multiselect
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
dbgrid multiselect
turkmenistandan selamlar
Re: dbgrid multiselect
Kod: Tümünü seç
//on create
SelectedList:=TStringList.Create;
procedure TChi1dTemplateForm.dbgMainGridKeyDown(Sender: TObject; var Key: Word: Shift: TShiftState):
var
i : Integer:
bm: String;
begin
// Если нажата клавиша пробела, то
if Key=VK_f2 then
begin
// Определяем ключ строки
bm:=TDataSet(dbgMainGrid.DataSource.DataSet).Fields[0].AsString;
// Запускаем цикл
for i:=0 to SelectedList.Count-1 do
// Если строка есть в списке, то снимаем выделение
if SelectedList[i] = bm then
begin
SelectedList.Delete(i);
TDataSet(dbgMainGrid.DataSource.DataSet).Next;
exit:
end:
// Добавляем строку
SelectedList.Add(bm):
listbox1.items.add(s);
TDataSet(dbgMainGrid.DataSource.DataSet).Next;
end;
end;
Kod: Tümünü seç
procedure TChi1dTemplateForm.dbgMainGridDrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
var
i:integer;
bm:String;
begin
// Определяем текущий ключ
bm:=TDataSet(dbgMainGrid.DataSource.DataSet).Fields[0]. AsString;
for i:=0 to SelectedList.Count-1 do
// Если срока есть в списке, то меняем цвет фона
i f SelectedList[i]= bm then
begin
dbgMainGrid.Canvas.Brush.Color:=clHighlight;
end;
Косметика 159
// Прорисовываем ячейку
dbgMainGrid.Canvas.FillRect(Rect);
dbgMainGrid.Canvas.TextOut(Rect.Left+2,Rect.Top+2, Field.AsString);
end;
turkmenistandan selamlar
Re: dbgrid multiselect
Kendi kullandığım bir örnek kod
Kod: Tümünü seç
procedure TOptikKagitTanimi.ispanelDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
S: string;
begin
// isPanel : StringGrid;
With ispanel do
Begin
if gdSelected in State then // aktif hücre seçili bir hücre ise
begin
Canvas.Brush.Color:=clblue; // hücre rengi mavi
Canvas.Font.Color:=ClWhite; // yazı rengi beyaz
end
else
begin
Canvas.Brush.Color := HucreRengi[ACol,ARow]; // burası kendim için kulandığım array of array of tColor
Canvas.Font.Color:=InvertColor(HucreRengi[Acol,Arow]); // bu da aynı rengi tersi
end;
Canvas.FillRect(Rect);
S := Cells[ACol, ARow];
Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, S);
end;
end;