AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Kollison OnDrawColumnCell und Anzeige in DBText

Kollison OnDrawColumnCell und Anzeige in DBText

Ein Thema von cs_ii · begonnen am 9. Mär 2004 · letzter Beitrag vom 9. Sep 2004
Antwort Antwort
Seite 2 von 2     12
cs_ii

Registriert seit: 9. Mär 2004
Ort: ilmenau
16 Beiträge
 
#11

Re: Kollison OnDrawColumnCell und Anzeige in DBText

  Alt 14. Mär 2004, 22:52
ich kanns dir ja mal zuschicken .
ich verwende delphi 7.
aber was is pm?

lg claudia
  Mit Zitat antworten Zitat
grayfox

Registriert seit: 22. Jan 2003
Ort: Litschau
173 Beiträge
 
Delphi 4 Standard
 
#12

Re: Kollison OnDrawColumnCell und Anzeige in DBText

  Alt 15. Mär 2004, 00:42
hallo nochmal!

also dein programm-problem hat mir keine ruhe gelassen, deshalb hab ich deine version nachgebaut. und siehe da, die dbeditfelder werden ebenfalls beim datensatzwechsel aktualisiert. nur ist mir aufgefallen, dass die anzeie flackert. das rührt daher, da du im OnDrawEvent des grids die zelleninhalte änderst und nicht die farbe vorgibst, in welcher sie gezeichnet werden sollen.
ich hängt dir meinen programmcode an - im OnShowEvent der form stehen die verknüpfungen zwischen der datasource und den dbeditfeldern im langtext - nur zur demonstration, da ich dort den fehler vermute.
Delphi-Quellcode:
unit Mainprog;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, Grids, DBGrids, ExtCtrls, Db, DBTables, Menus, StdCtrls, Mask,
  Buttons;

type
  TMainDlg = class(TForm)
    MainMenu1: TMainMenu;
    Programm1: TMenuItem;
    About1: TMenuItem;
    Beenden1: TMenuItem;
    Tabelle1: TMenuItem;
    oeffnen: TMenuItem;
    schliessen1: TMenuItem;
    N1: TMenuItem;
    anlegen1: TMenuItem;
    aTable: TTable;
    DataSource1: TDataSource;
    Panel1: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel2: TPanel;
    DBGrid1: TDBGrid;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    DBNavigator1: TDBNavigator;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    Label4: TLabel;
    OpenBtn: TSpeedButton;
    CloseBtn: TSpeedButton;
    BitBtn1: TBitBtn;
    procedure Beenden1Click(Sender: TObject);
    procedure anlegen1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure OpenBtnClick(Sender: TObject);
    procedure oeffnenClick(Sender: TObject);
    procedure CloseBtnClick(Sender: TObject);
    procedure schliessen1Click(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
  private
    { Private-Deklarationen }
    aDatenDir: String;
  public
    { Public-Deklarationen }
  end;

var
  MainDlg: TMainDlg;

implementation

{$R *.DFM}

procedure TMainDlg.Beenden1Click(Sender: TObject);
begin
  close;
end;

procedure TMainDlg.anlegen1Click(Sender: TObject);
var
  tmpTable: TTable;
  TextToShow: String;
begin
  tmpTable:= TTable.Create(self);
  try
    with tmpTable do begin
      DatabaseName:= aDatenDir + 'Daten';
      Tablename:= 'TestTable.DB'
    end;

    tmpTable.Close;
    if tmpTable.Exists then begin
      TextToShow:= Format('Die Tabelle %s ist bereits angelegt' + #13#10
        + 'Soll sie überschrieben werden?',[tmpTable.Tablename]);
      if MessageDlg(TextToShow,mtConfirmation,[mbOk,mbCancel],0)= mrCancel then
        Exit;
    end;

    with tmpTable do begin
      with FieldDefs do begin
        Clear;
        Add('ID',ftAutoInc,0,true);
        Add('Codec',ftString,10,true);
        Add('Bemerkung',ftString,30,false)
      end;
      with IndexDefs do begin
        Clear;
        Add('','ID',[ixPrimary, ixUnique])
      end;
      CreateTable;
    end;
    ShowMessage('die Tabelle wurde erfolgreich angelegt');
  finally
    tmpTable.Close;
    tmpTable.Free;
  end;
end;

procedure TMainDlg.FormCreate(Sender: TObject);
begin
  aDatenDir:= ExtractFilePath(ParamStr(0));
  Label4.Caption:= aDatenDir;
end;

procedure TMainDlg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  aTable.Close
end;

procedure TMainDlg.FormShow(Sender: TObject);
begin
  DBEdit2.DataSource:= DataSource1;
  DBEdit2.DataField:= 'Codec';
  DBEdit3.DataSource:= DataSource1;
  DBEdit3.DataField:= 'Bemerkung'
end;

procedure TMainDlg.OpenBtnClick(Sender: TObject);
begin
  if not aTable.Active then
    aTable.Open
end;

procedure TMainDlg.oeffnenClick(Sender: TObject);
begin
  if not aTable.Active then
    aTable.Open
end;

procedure TMainDlg.CloseBtnClick(Sender: TObject);
begin
  aTable.Close
end;

procedure TMainDlg.schliessen1Click(Sender: TObject);
begin
  aTable.Close
end;

procedure TMainDlg.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  aValue: string;
begin
  if (gdSelected in State) or (gdFocused in State) then exit;

  if Column.Index = 1 then begin {nummer der spalte im dbgrid}
    aValue:= Column.Field.asString; {suchbegriff auslesen}
    if aValue = 'DivXthen begin
      DBGrid1.Canvas.Font.Color := clYellow;
      DBGrid1.Canvas.Brush.Color := clRed
    end else if aValue = 'SVCDthen begin
      DBGrid1.Canvas.Font.Color := clYellow;
      DBGrid1.Canvas.Brush.Color := clNavy
    end else if aValue = 'VCDthen begin
      DBGrid1.Canvas.Font.Color := clWhite;
      DBGrid1.Canvas.Brush.Color := clPurple
    end else begin
      DBGrid1.Canvas.Font.Color := clBlack;
      DBGrid1.Canvas.Brush.Color := clwhite
    end;
  end;

  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

end.
pm = private message
einfach auf meinen nick klicken, 'private nachricht' auswählen und dein projekt gezippt als attachment anhängen. (die exe & dcu bitte nicht mitschicken)
ich hab zwar nur delphi 4, aber solange du keine exotischen befehle und/oder komponenten verwendest, sollte ich mit deiner version arbeiten können

lg, stefan
  Mit Zitat antworten Zitat
cs_ii

Registriert seit: 9. Mär 2004
Ort: ilmenau
16 Beiträge
 
#13

Re: Kollison OnDrawColumnCell und Anzeige in DBText

  Alt 15. Mär 2004, 12:14


SUUUUUUUUUUUUUUUUUPER! es funktioniert... ich danke dir... spitze!
ich zweifel zwar jetzt an meinem verstand, weil sooo schwer is das ja gar nicht aber ich bin froh, dass es endlich klappt.
nochmal ganz vielen dank!!!
  Mit Zitat antworten Zitat
grayfox

Registriert seit: 22. Jan 2003
Ort: Litschau
173 Beiträge
 
Delphi 4 Standard
 
#14

Re: Kollison OnDrawColumnCell und Anzeige in DBText

  Alt 15. Mär 2004, 22:12
hallo claudia!

freut mich echt, dass es dir doch noch gelungen ist, dein dbgrid so hinzukriegen, wie du es haben wolltest
jetzt brauchst nur noch zu sagen, dass meine vermutung mit der datasource bei den dbedit-feldern richtig war, dann freut es mich umso mehr
und falls doch nicht, wo lag dann das problem versteckt?

lg, stefan
  Mit Zitat antworten Zitat
cs_ii

Registriert seit: 9. Mär 2004
Ort: ilmenau
16 Beiträge
 
#15

Re: Kollison OnDrawColumnCell und Anzeige in DBText

  Alt 16. Mär 2004, 18:18
hallo!

also der datasource in den dbtext-feldern war richtig... daran lag es nicht... ich hab mir deinen quellcode genommen, ihn ein wenig geändert und dann ging es ganz so wie es gewünscht war...

also nochmal eine ganz großes DANKE
  Mit Zitat antworten Zitat
Delphi_Fanatic

Registriert seit: 24. Mär 2004
201 Beiträge
 
#16

Re: Kollison OnDrawColumnCell und Anzeige in DBText

  Alt 9. Sep 2004, 15:48
(An dieser Stelle mal ein grosses Lob an die Betreiber dieses Forums und an dejenigen, die sich hier aktiv mit hilfreichen Antworten beteiligen.

Gerade wollte ich in einem DBGrid dafür sorgen, dass in bestimmten Zellen in Abhängigkeit von bestimmten Werten diese Zellen mit unterschiedlichen
Farben unterlegt werden.

Da hab' ich "OnDrawColumnCell" bei google eingegeben, bin gleich auf diesen Thread hier vom März diesen Jahres gestossen und hab' hinterher nicht mal mehr eine halbe Minute gebraucht, um mein Problem zu lösen. Also schneller kann einem wirklich nicht mehr geholfen werden ... 8) Ein tolles 'Nachschlage-Werk' ist das hier ... )
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz