AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Erscheinungsbild TDBgrid im Titel ändern

Ein Thema von etom291272 · begonnen am 3. Sep 2005 · letzter Beitrag vom 27. Okt 2005
Antwort Antwort
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#1

Erscheinungsbild TDBgrid im Titel ändern

  Alt 3. Sep 2005, 10:33
Hallo zusammen

Bitte um Ideen welche Möglichkeiten man hat das erscheinungsbild der im Delphi Standardmässigen
Komponenente TDBGrid im Titel zu ändern.

Mit dem event ondrawcolumncell kann man sich im Datenbereich ja mit eine wenig code so richtig austoben dass man keine fremdkomponente für ein modernes farbenfrohes erscheinungsbild braucht.

Aber ich habe bis jetzt nichts gefunden wie man die "Buttons" in den Titel ändern kann. Man kann zwar mit der eigenschaft fixedcolour die farbe der Buttons ändern aber das ist es nicht wirklich

Habe in der Anlage ein Bildschirmfoto eines grids wie ich mir das ungefähr vorstelle (Farbverlauf wäre schön wichtiger sind die plastischen Trennlinien)

Ich möchte keine fremdkomponente verwenden wie TMS oder DevExpress Grids da ich maximal kompatibel für spätere portierungen (.NET) bleiben möchte.

Bin gespannt auf eure ideen
Miniaturansicht angehängter Grafiken
dbgrid_255.jpg  
  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#2

Re: Erscheinungsbild TDBgrid im Titel ändern

  Alt 3. Sep 2005, 18:44


Wenn jemand diesen Beitrag liest und der Meinung ist dass es nicht möglich ist in das Erscheinungsbild der Titelleiste der Trennlinien der selben und des Indikators des DbGrids einzugreifen wäre ich über einen Post trotzdem dankbar denn dann kann ich das Thema abhaken und eine andere Lösung suchen.

Bin gespannt auf eure Meinungen



  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Erscheinungsbild TDBgrid im Titel ändern

  Alt 3. Sep 2005, 20:19
Hi,

wenn du dein Grid einmal mit DefaultDrawing = FALSE anzeigen lässt, dann siehst du, was alles ohne dein Zutun gezeichnet wird - vorausgesetzt du hast den event handler für OnDrawColumnCell deaktiviert. An das Zeichnen der title row wirst du wohl keinen Griff dran bekommen, da die zuständige procedure DrawTitleCell() als local procedure von DrawCell() definiert ist.

Mitfühlende Grüße vom marabu
  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#4

Re: Erscheinungsbild TDBgrid im Titel ändern

  Alt 3. Sep 2005, 20:51


trotzdem

danke für deine antwort
  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#5

Re: Erscheinungsbild TDBgrid im Titel ändern

  Alt 3. Sep 2005, 21:16

habe mir gerade die komponente tdbgrid näher angeschaut die verantwortliche procedure schaut imho nicht allzu komplex aus wäre es möglich eine eigene klasse anzuleiten und die procedure
Delphi-Quellcode:
procedure TCustomDBGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
var
  FrameOffs: Byte;

  function RowIsMultiSelected: Boolean;
  var
    Index: Integer;
  begin
    Result := (dgMultiSelect in Options) and Datalink.Active and
      FBookmarks.Find(Datalink.Datasource.Dataset.Bookmark, Index);
  end;

  procedure DrawTitleCell(ACol, ARow: Integer; Column: TColumn; var AState: TGridDrawState);
  const
    ScrollArrows: array [Boolean, Boolean] of Integer =
      ((DFCS_SCROLLRIGHT, DFCS_SCROLLLEFT), (DFCS_SCROLLLEFT, DFCS_SCROLLRIGHT));
  var
    MasterCol: TColumn;
    TitleRect, TextRect, ButtonRect: TRect;
    I: Integer;
    InBiDiMode: Boolean;
  begin
    TitleRect := CalcTitleRect(Column, ARow, MasterCol);

    if MasterCol = nil then
    begin
      Canvas.FillRect(ARect);
      Exit;
    end;
// geht noch weiter
zu überschreiben und nach eigenen wünschen anzupassen oder ist das eine sisiphus aufgabe

  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#6

Re: Erscheinungsbild TDBgrid im Titel ändern

  Alt 4. Sep 2005, 12:11


und es geht doch

mit ein wenig knoff hoff und ein bisschen code kann man aus dem Standard Dbgrid wirklich einiges machen

Das Bild in der Anlage zeigt die normale Komponente TDBGrid.
Miniaturansicht angehängter Grafiken
mydbgrid_365.jpg  
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Erscheinungsbild TDBgrid im Titel ändern

  Alt 4. Sep 2005, 13:03
Ist schön geworden - aber ohne source license wäre das ziemlich schwierig gewesen...

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#8

Re: Erscheinungsbild TDBgrid im Titel ändern

  Alt 4. Sep 2005, 14:01


Hab am source nichts geändert wollte ja die vcl nicht umschreiben

das grid liegt auf einem panel auf dem wiederum ein panel mit align top liegt der grid selbst dann align alclient und titles auf false.
Anschliessend werden über eine schleife die plastichen titel dynamisch erzeugt und über die parant control an das panel oberhalb des grids gebunden. durch setzen des events on resize zur laufzeit kann ich sogar die breite der spalten des grids ändern





Delphi-Quellcode:
private
    prGrPanels:Array[0..20] of TAdvPanel;
Delphi-Quellcode:
procedure TFmArtikelSystem.FormCreate(Sender: TObject);
var
  aComboListe:TStringList;
  i:Integer;

begin
  

  for i:=0 to exDbGr.Columns.Count-1 do
  begin
    prGrPanels[i]:=FmDmHaupt.ErzTitelDbGrid(panGrTitel);
    prGrPanels[i].Width:=exDbGr.Columns[i].Width+1;
    prGrPanels[i].Text:=StringReplace(prGrPanels[i].Text,'@bez',' '+exDbGr.Columns[i].Title.Caption,[rfReplaceAll]);
    prGrPanels[i].Show;
  end;

end;
Delphi-Quellcode:
function TFmDmHaupt.ErzTitelDbGrid(pParent:TPanel): TAdvPanel;
var
  agrpan: TAdvPanel;
begin
  agrpan := TAdvPanel.Create(Self);
  with agrpan do
  begin
    Parent := pParent;
    Align := alLeft;
    Color := clWindow;
    CanSize := False;
    Caption.Visible := False;
    Collaps := False;
    ColorTo := 14075590;
    Text := '<FONT size="10" face="MS Sans Serif">'+'@bez'+'</FONT>';
    TextVAlign := tvaCenter;
    BevelWidth:=1;
  end;
  Result:=agrpan;
end;
dazu noch eine Frage muss ich mich persönlich darum kümmern die dynamisch erstellten
komponenten mit free freizugeben oder wird das beim close des formulars (action ist bei mir cafree)
automatisch von delphi erledigt
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Erscheinungsbild TDBgrid im Titel ändern

  Alt 4. Sep 2005, 14:14
Hi du Schlingel,

Zitat von etom291272:
Das Bild in der Anlage zeigt die normale Komponente TDBGrid.
aber zu deiner Frage: der Owner ist für die Freigabe verantwortlich.

marabu
  Mit Zitat antworten Zitat
hoscha123

Registriert seit: 25. Okt 2005
Ort: Mülheim a.d. Ruhr
4 Beiträge
 
#10

Re: Erscheinungsbild TDBgrid im Titel ändern

  Alt 27. Okt 2005, 06:15
Hallo zusammen,

bin neu hier und sage erstmal "Hallo" an alle.

Bin beim stöbern hier im Forum auf diesen Artikel gestoßen und fand Ihn sehr gut.
Da ich eigentlich aus einer anderen Programmiersprache komme, mich aber nun mit
Delphi (2005) auseinandersetzen muss, würde ich 'etom291272' bitten, diese DBGridprogrammierung
mal im Ganzen (als komplettes Projekt) ins Netz zu stellen. (Damit auch Delphi-Neulinge
wie ich einen kleinen Einblick bekommen).

vielen Dank im Voraus
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:27 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