dbgird edit durumda iken boşluğa tıklanınca girilen veri yok

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
hgunes
Üye
Mesajlar: 27
Kayıt: 01 Nis 2007 03:40
Konum: Çorum

Mesaj gönderen hgunes »

s.a

Sorunuzu okuduktan sonra bir deneme yapmaya karar verdim. Aşağıdaki kod ile işinizi görebilirsiniz sanırım.

Öncelikle formun type kısmında TCustomGrid ve TDBGrid'i yeniden deklare ederek bazı özelliklerini açığa çıkarıyoruz.

Kod: Tümünü seç

type
//TCustomGrid'in DefaultRowHeigth ve VisibleRowCount özelliklerine ulaşabilmek için
  TCustomGrid = Class(Grids.TCustomGrid);
//TDBGrid'in OnMouseDown olayını değiştirebilmek için
  TDBGrid = Class(DBGrids.TDBGrid)
  private
    function IsBoslugaTiklandi(Y : Integer) : Boolean;
  published
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
  end;
  TForm1 = class(TForm)
  ....



implementation
{ TDBGrid }

function TDBGrid.IsBoslugaTiklandi(Y: Integer): Boolean;
  var GorunenSatirAdedi, BaslikSatiri : Integer;
begin
  BaslikSatiri := Integer(dgTitles in Self.Options);
  GorunenSatirAdedi := TCustomGrid(Self).VisibleRowCount + BaslikSatiri;
  Result := Y > (TCustomGrid(Self).DefaultRowHeight * GorunenSatirAdedi);
end;

procedure TDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  if (Self.DataSource.DataSet.State in [dsEdit,dsInsert]) and
    IsBoslugaTiklandi(Y) then
    Exit;
  inherited;
end;
....
end.
Kolay Gelsin
kadioglu
Üye
Mesajlar: 34
Kayıt: 22 Mar 2004 06:15

Mesaj gönderen kadioglu »

teşekür ederim..
sonunda çözdüm verdiğniiz bilgilerle..
kodu lazım olacak arkadaşlar için kod şöyle;

unit .....;

uses .......

type
//TCustomGrid'in DefaultRowHeigth ve VisibleRowCount özelliklerine ulaşabilmek için
TCustomGrid = Class(Grids.TCustomGrid);
//TDBGrid'in OnMouseDown olayını değiştirebilmek için
TDBGrid = Class(DBGrids.TDBGrid)
private
published
function IsBoslugaTiklandi(Y : Integer) : Boolean;

end;


type
TAtama_ = class(TForm)
Panel1: TPanel;
Label1: TLabel;
.

.
end;
var
Atama_: TAtama_;
implementation


function TDBGrid.IsBoslugaTiklandi(Y: Integer): Boolean;
var GorunenSatirAdedi, BaslikSatiri : Integer;
begin
BaslikSatiri := Integer(dgTitles in Self.Options);
GorunenSatirAdedi := TCustomGrid(Self).VisibleRowCount + BaslikSatiri;
Result := Y > (TCustomGrid(Self).DefaultRowHeight * GorunenSatirAdedi);
end;
.
.
.
.
..
.
.
.
.
.
.
procedure TAtama_.DBGrid2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//bu kısıma kendi datasource isimlerimizi yazıyoruz...ve dbgridimizin ismi
if (vt.DataSource6.DataSet.State in [dsEdit,dsInsert]) and
DBGrid2.IsBoslugaTiklandi(Y) then
vt.Personel_a.Post;
inherited;
end;

iyi çalışmalar
...ROKA...
Cevapla