DBButton

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

DBButton

Mesaj gönderen oguzozturk74 »

SA

İnternette komponentlara baktığımda DataAware BitButton gibi, yani Veri Tabanı Duyarlı Buton ile karşılaştım. :roll:
Acaba bunların kullanım alanları nasıl olabilir?
Çok gerekli midir ?

Saygılar
Oğuz ÖZTÜRK
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

Anlattığın db button olayına gelince bana mantıksız geliyo. Aklıma gelen,verdiğin component isminden anlaşılıyo zaten db bitbutton bence bu buton üzerindeki resmi database den alıyo. Başka mantıklı bir açıklaması yok bana göre...

Componenti indir bir kur derim... Sonucu da yazarsan memnun oluruz...

Saygılar
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

ben de bir ara böyle bir component ile karşılaşmışdım..
Burada bahsetilen büyük bir olasılıkla dbnavigator butonlarının işlevlerini taşıyan butonlar..

Ben LMD Tools component paketini kullanıyorum ve aynen oğuz senin dediğin gibi dbspeedbutonlar var ve görevleri tablolar üzerinde first,last,ınsert,post.....
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Bileşeni kurdum, ve Object Properties inde normal SpeedBtn dan tek farkı Datasource u ve DataField ı var. Benim delphi nin RUN yapmasında bir sorun olduğu için bileşeni deneyemedim.

Sorunu hallettiğimde ne işe yaradığını yazacağım.

Kolay gelsin :)

Kod: Tümünü seç

//Original freeware source by Waheed Al-Sayer, 1997
//Modifications by U. Molzahn, 1997/2000 Freeware, but no warranty whatsoever !

unit dpDBSpeedButton;
interface
uses
{$ifdef WIN32}
  ComCtrls, CommCtrl,
{$endif}
  WinTypes, WinProcs, Messages, SysUtils, Classes,
  Graphics, Controls, StdCtrls, DB, DbTables, DBCtrls, Buttons;

type
  TdpDBSpeedButton = class(TSpeedButton)
  private
    { Private declarations }
    fDataLink: TFieldDataLink;
    FReverseLogic: Boolean;
    function GetDataField: string;
    function GetDataSource: TDataSource;
    procedure SetDataField(const Field: string);
    procedure SetDataSource(DataSource: TDataSource);
    procedure DataChange(Sender: TObject);
    procedure Notification(Component: TComponent; Operation: TOperation); override;
  {$ifndef VER80}
    procedure CmGetDataLink(var Msg: TMessage); message Cm_GetDataLink;
  {$endif}
    procedure SetReverseLogic(Value: boolean);
  protected
  public
    constructor Create(Owner: TComponent); override;
    destructor Destroy; override;
  published
    property DataField: string read GetDataField write SetDataField;
    property DataSource: TDataSource read GetDataSource write SetDataSource;
    property ReverseLogic: Boolean read FReverseLogic write SetReverseLogic;
  end;

procedure Register;

implementation

constructor TdpDBSpeedButton.Create(Owner: TComponent);
begin
  inherited Create(Owner);
  FDataLink := TFieldDataLink.Create;
  FDataLink.OnDataChange := DataChange;
  FDataLink.Control := Self;
  FReverseLogic := True;
end;

destructor TdpDBSpeedButton.Destroy;
begin
  FDataLink.Free;
  inherited Destroy;
end;

procedure TdpDBSpeedButton.SetReverseLogic(Value: boolean);
begin
   if Value <> FReverseLogic then begin
      FReverseLogic := Value;
      DataChange(Self);
   end;
end;

function TdpDBSpeedButton.GetDataField: string;
begin
  Result := FDataLink.FieldName
end;

function TdpDBSpeedButton.GetDataSource: TDataSource;
begin
  Result := FDataLink.DataSource
end;

procedure TdpDBSpeedButton.SetDataField(const Field: string);
begin
  fDataLink.FieldName := Field
end;

procedure TdpDBSpeedButton.SetDataSource(DataSource: TDataSource);
begin
  fDataLink.DataSource := DataSource;
{$ifndef VER80}
  if DataSource <> nil then
    DataSource.FreeNotification(Self);
{$endif}
end;

procedure TdpDBSpeedButton.Notification(Component: TComponent; Operation: TOperation);
begin
  inherited Notification(Component, Operation);
  if (fDataLink <> nil) and (Component = DataSource) and (Operation = opRemove)
  then
    DataSource := nil
end;

procedure TdpDBSpeedButton.DataChange(Sender: TObject);
begin
  if fDataLink.Field = nil then
  else if FReverseLogic then
       if FDataLink.Field.DisplayText = 'True' then
          Enabled := False
       else if FDataLink.Field.DisplayText = 'False' then
          Enabled := True
          else Enabled := FDataLink.Field.DisplayText = ''
          else if FDataLink.Field.DisplayText = 'True' then
          Enabled := True
       else if FDataLink.Field.DisplayText = 'False' then
          Enabled := False
          else Enabled := FDataLink.Field.DisplayText <> ''
end;

{$ifndef VER80}
procedure TdpDBSpeedButton.CmGetDataLink(var Msg: TMessage);
begin
  Msg.Result := LongInt(fDataLink);
end;
{$endif}

procedure Register;
begin
  RegisterComponents('Data Controls', [TdpDBSpeedButton]);
end;

end.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

özel meseleleri özel mesaj ve e-mail ile konuşmak daha uygun olur. Bizi ilgilendiren birşey olursa iletirsiniz.

Kolay gelsin.
Cevapla