Merhaba arkadaşlar,
Uzun zamandır cevabını bulmaya çalıştığım bir soru var.
Veri tabanında DBGrid ile verileri alıyorum. DBGrid'de yalnızca bir hücrede picklist kullanmak istiyorum (Benzeri bir dropdown list de olabilir). Ancak bir türlü bunu yapamadım.
Column'un picklist özelliği tüm sütun için picklist ekliyor. Ama ben istediğim hücreler için eklemek istiyorum.
Yardımlarınız için şimdiden teşekkürler.
DbGrid'de yalnızca bir hücrede picklist
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 239
- Kayıt: 04 Oca 2008 01:53
- Konum: Karşıyaka/İzmir
DbGrid'de yalnızca bir hücrede picklist
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Şüpheden sanık/özgürlük yararlanır...
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
Re: DbGrid'de yalnızca bir hücrede picklist
dbgridde istediğiniz colonu seçip picklist özelliğinden ekleyin
Re: DbGrid'de yalnızca bir hücrede picklist
Şu kod tabledeki alanın bağlı olduğu kolonu verir.
Ekleyeceğin ikinci kontrol ise şu olmalı
DBGridin satırlarında cursorun gezinmesinin tetikleyeceği bir yere de
Kod: Tümünü seç
function FindColumn(const DBGrid: TDBGrid; const FName: string): TColumn;
var i: Integer;
begin
Result := nil; i := 0;
while not Assigned(Result) and (i < DBGrid.Columns.Count) do begin
if AnsiCompareText(DBGrid.Columns[i].FieldName, FName) = 0 then
Result := DBGrid.Columns[i];
Inc(i);
end;
end;
DBGridin satırlarında cursorun gezinmesinin tetikleyeceği bir yere de
Kod: Tümünü seç
if Dbgridindataseti.Fieldbyname('SARTKOYMAKISTEDIGINALAN').asString='PICKLIST ÇIKMASINI ISTEDIGIN SART' then
begin
FindColumn(DBGrid1,'ALANADI').PickList.Add('EKLENECEK ELEMAN1');
FindColumn(DBGrid1,'ALANADI').PickList.Add('EKLENECEK ELEMAN2');
FindColumn(DBGrid1,'ALANADI').PickList.Add('EKLENECEK ELEMAN2');
......
......
....
end
else
begin
FindColumn(DBGrid1,'ALANADI').PickList.clear;
end;
-
- Üye
- Mesajlar: 239
- Kayıt: 04 Oca 2008 01:53
- Konum: Karşıyaka/İzmir
Re: DbGrid'de yalnızca bir hücrede picklist
Merhaba,
Yanıtlarınız için teşekkür ederim. Aşağıdaki kodu yazdım ama maalesef picklist çıkmadı.
Yanıtlarınız için teşekkür ederim. Aşağıdaki kodu yazdım ama maalesef picklist çıkmadı.
Kod: Tümünü seç
unit ufrmAdvSet;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.DBCtrls,
Vcl.Grids, Vcl.DBGrids, Data.DB, ABSMain, Datasnap.DBClient;
type THackDBGrid = class(TDBGrid);
type
TfrmAdv = class(TForm)
GroupBox1: TGroupBox;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DataSource1: TDataSource;
ABSTable1: TABSTable;
ClientDataSet1: TClientDataSet;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmAdv: TfrmAdv;
implementation
{$R *.dfm}
uses
uConf, uMain,uIOConsts;
function FindColumn(const DBGrid: TDBGrid; const FName: string): TColumn;
var i: Integer;
begin
Result := nil; i := 0;
while not Assigned(Result) and (i < DBGrid.Columns.Count) do begin
if AnsiCompareText(DBGrid.Columns[i].FieldName, FName) = 0 then
Result := DBGrid.Columns[i];
Inc(i);
end;
end;
procedure TfrmAdv.FormCreate(Sender: TObject);
var
db: TABSDatabase;
q: TABSQuery;
i:integer;
begin
DB := TABSDatabase.Create(nil);
Q:=TABSQuery.Create(nil);
db.DatabaseName:=DBName;
db.DatabaseFileName:=app_path+DBPath;
db.Open;
ABSTable1.DatabaseName:=db.DatabaseName;
ABSTable1.TableName:='settings';
ABSTable1.Active:=True;
DataSource1.DataSet:=ABSTable1;
DBGrid1.DataSource:=DataSource1;
DBNavigator1.DataSource:=DataSource1;
DBGrid1.Columns[0].Visible :=False;
DBGrid1.Columns[1].Width:=150;
DBGrid1.Columns[1].ReadOnly:=true;
{
for i:=0 to dbgrid1.DataSource.DataSet.RecordCount-1 do begin
//DBGrid1.DataSource.DataSet.RecNo
end; }
if dbgrid1.DataSource.DataSet.Fieldbyname('ConfKey').asString='ProgramLanguage' then
begin
FindColumn(DBGrid1,'ConfValue').PickList.Add('Turkish');
FindColumn(DBGrid1,'ConfValue').PickList.Add('English');
FindColumn(DBGrid1,'ConfValue').PickList.Add('Spanish');
end
else
begin
FindColumn(DBGrid1,'ConfValue').PickList.clear;
end;
end;
end.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Şüpheden sanık/özgürlük yararlanır...
-
- Üye
- Mesajlar: 239
- Kayıt: 04 Oca 2008 01:53
- Konum: Karşıyaka/İzmir
Re: DbGrid'de yalnızca bir hücrede picklist
Ben tüm kolona picklist eklemek istemiyorum. Kolon içinde yalnızca bir hücreye eklemek istiyorum.White Rose yazdı:dbgridde istediğiniz colonu seçip picklist özelliğinden ekleyin
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Şüpheden sanık/özgürlük yararlanır...
Re: DbGrid'de yalnızca bir hücrede picklist
mesajımda yazdığı şekilde kullanırsan çıkacaktır.
Bizzat kullanıyorum bu kodu.
Bizzat kullanıyorum bu kodu.