dbgrid multiselect

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
arkach
Üye
Mesajlar: 51
Kayıt: 28 Ara 2006 08:56

dbgrid multiselect

Mesaj gönderen arkach »

Selam!

Dbgrid'de multiselect-i shift ve yon tuslari ile degilde mesela F2 tusu ile nasil yapabilirm
turkmenistandan selamlar
arkach
Üye
Mesajlar: 51
Kayıt: 28 Ara 2006 08:56

Re: dbgrid multiselect

Mesaj gönderen arkach »

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;
bu yontemle halletdim ama secilmis alan renkli olmasini istiyorum onuda asagidaki kodlarla yapmaya calisiyorum olmuyor nerde yalnis bir bakarmisiniz?

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
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: dbgrid multiselect

Mesaj gönderen Lost Soul »

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;
Cevapla