Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Erscheinungsbild TDBgrid im Titel ändern (https://www.delphipraxis.net/52765-erscheinungsbild-tdbgrid-im-titel-aendern.html)

etom291272 3. Sep 2005 10:33


Erscheinungsbild TDBgrid im Titel ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
:-D 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 :wall:

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) :mrgreen:

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 :?: :?: :?:
:wiejetzt:

etom291272 3. Sep 2005 18:44

Re: Erscheinungsbild TDBgrid im Titel ändern
 
:?: :?: :!: :!: :?: :?:

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

:dp:

:coder: :coder: :coder:

marabu 3. Sep 2005 20:19

Re: Erscheinungsbild TDBgrid im Titel ändern
 
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

etom291272 3. Sep 2005 20:51

Re: Erscheinungsbild TDBgrid im Titel ändern
 
:| :| :wall:

trotzdem

danke für deine antwort :cheers:

etom291272 3. Sep 2005 21:16

Re: Erscheinungsbild TDBgrid im Titel ändern
 
:twisted:
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 :?: :?: :?:

:coder2:

etom291272 4. Sep 2005 12:11

Re: Erscheinungsbild TDBgrid im Titel ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
:twisted: :twisted:

und es geht doch :mrgreen:

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.

marabu 4. Sep 2005 13:03

Re: Erscheinungsbild TDBgrid im Titel ändern
 
Ist schön geworden - aber ohne source license wäre das ziemlich schwierig gewesen...

Freundliche Grüße vom marabu

etom291272 4. Sep 2005 14:01

Re: Erscheinungsbild TDBgrid im Titel ändern
 
:mrgreen:

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



:coder: :coder: :coder:

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

marabu 4. Sep 2005 14:14

Re: Erscheinungsbild TDBgrid im Titel ändern
 
Hi du Schlingel,

Zitat:

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

hoscha123 27. Okt 2005 06:15

Re: Erscheinungsbild TDBgrid im Titel ändern
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:10 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