AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls DrawGrid Inhalt verschwindet beim Auswählen einer Zelle/Reihe

DrawGrid Inhalt verschwindet beim Auswählen einer Zelle/Reihe

Ein Thema von MeisterLampe · begonnen am 4. Jan 2013 · letzter Beitrag vom 6. Jan 2013
Antwort Antwort
MeisterLampe

Registriert seit: 10. Dez 2012
16 Beiträge
 
Delphi XE2 Starter
 
#1

DrawGrid Inhalt verschwindet beim Auswählen einer Zelle/Reihe

  Alt 4. Jan 2013, 18:44
Ich benutze folgenden Code um zwei Textzeilen mit unterschiedlicher Farbe und unterschiedlichem Einruck in ein DrawGrid zu zeichnen.

Delphi-Quellcode:
procedure TForm1.DrawGridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
Var
  Rect1, Rect2: TRect;
  S: String;
begin
  Rect1.Left := Rect.Left + 5;
  Rect1.Top := Rect.Top;
  Rect1.Height := Rect.Height Div 2;
  Rect2.Left := Rect.Left + 25;
  Rect2.Top := Rect.Top + (Rect.Height Div 2);
  Rect2.Height := Rect.Height DIV 2;

  S := 'Text 1';
  DrawGrid.Canvas.Font.Color := clBlack;
  DrawGrid.Canvas.TextRect(Rect1, S, [tfVerticalCenter, tfSingleLine]);

  S := 'Text 2';
  DrawGrid.Canvas.Font.Color := $006B6B6B;
  DrawGrid.Canvas.TextRect(Rect2, S, [tfVerticalCenter, tfSingleLine]);
Das funktioniert soweit auch super. Nur wenn ich nun eine Zelle bzw die ganze Reihe anklicke und dieser blaue SelektierRahmen erscheint, verschwindet die untere Textzeile

Woran liegt das?
Zur Verdeutlichung hab ich ein Foto angehängt.

Danke schonmal.
Liebe Grüße.
Miniaturansicht angehängter Grafiken
drawgrid-beispiel.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.325 Beiträge
 
Delphi XE2 Professional
 
#2

AW: DrawGrid Inhalt verschwindet beim Auswählen einer Zelle/Reihe

  Alt 4. Jan 2013, 20:16
Also bei mir funktioniert dein Code ohne dass eine Text-Zeile verloren geht.

Was für eine Delphi-Version benutzt du?

Ansonsten könntest du State abfragen:

Delphi-Quellcode:
procedure TForm1.DrawGridDrawCell(Sender: TObject; ACol, ARow: Integer;
   Rect: TRect; State: TGridDrawState);

begin
{...}

   If gdSelected in State then
    begin
      //Hier zeichnen wenn Zelle markiert ist
    end;

   If gdRowSelected in State then
    begin
      //Hier zeichnen wenn Zeile markiert ist
    end;

{...}
end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi ( 5. Jan 2013 um 11:14 Uhr)
  Mit Zitat antworten Zitat
MeisterLampe

Registriert seit: 10. Dez 2012
16 Beiträge
 
Delphi XE2 Starter
 
#3

AW: DrawGrid Inhalt verschwindet beim Auswählen einer Zelle/Reihe

  Alt 4. Jan 2013, 21:51
Also ich verwende Delphi XE2.

Ich habe vergessen zu erwähnen, dass mein Grid nur eine Spalte hat und mein beschriebenes Phänomen halt auftritt, wenn ich eben die Zelle anwähle, EGAL ob ich RowSelect true oder false setze :/
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.325 Beiträge
 
Delphi XE2 Professional
 
#4

AW: DrawGrid Inhalt verschwindet beim Auswählen einer Zelle/Reihe

  Alt 4. Jan 2013, 21:59
Also ich verwende Delphi XE2.
Trage das doch bitte in deinem Profil ein, dann weiss jeder sofort was du nutzt

Ich habe vergessen zu erwähnen, dass mein Grid nur eine Spalte hat und mein beschriebenes Phänomen halt auftritt, wenn ich eben die Zelle anwähle, EGAL ob ich RowSelect true oder false setze :/
Auch mit nur einer Spalte hab ich keine Probleme.
Könntest du bitte ein kleines Testprojekt bauen, indem man das Phänomen erkennt?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
MeisterLampe

Registriert seit: 10. Dez 2012
16 Beiträge
 
Delphi XE2 Starter
 
#5

AW: DrawGrid Inhalt verschwindet beim Auswählen einer Zelle/Reihe

  Alt 4. Jan 2013, 22:14
Auch mit nur einer Spalte hab ich keine Probleme.
Könntest du bitte ein kleines Testprojekt bauen, indem man das Phänomen erkennt?
Ist glaube ich nicht mehr nötig.
Es lag an der Option:
goDrawFocusSelected Wenn ich die deaktiviere und bei OnExit folgendes tue:
Delphi-Quellcode:
procedure TForm1.QUEUE_Grid_Exit(Sender: TObject);
begin
  QUEUE_Grid.Selection := TGridRect(Rect(-1, -1, -1, -1));
end;
Dann klappt es.

Irgendwie muss der Focus der zurückbleibt, wenn man das Grid verlässt mein eines TextRect verschluckt haben

Geändert von MeisterLampe ( 4. Jan 2013 um 22:16 Uhr) Grund: Vertippt :$
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.325 Beiträge
 
Delphi XE2 Professional
 
#6

AW: DrawGrid Inhalt verschwindet beim Auswählen einer Zelle/Reihe

  Alt 4. Jan 2013, 22:19
Wenn ich diese Option aktiviere, dann funktionierts trotzdem.

Hast du vielleicht irgendwo noch nen Code drin, der reinpfutscht?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
MeisterLampe

Registriert seit: 10. Dez 2012
16 Beiträge
 
Delphi XE2 Starter
 
#7

AW: DrawGrid Inhalt verschwindet beim Auswählen einer Zelle/Reihe

  Alt 5. Jan 2013, 00:28
Wenn ich diese Option aktiviere, dann funktionierts trotzdem.

Hast du vielleicht irgendwo noch nen Code drin, der reinpfutscht?
Bei mir nicht. Und nein ich hab keinen Code der bei OnSelect etc ausgeführt wird und somit reinpfuscht.
Ich hab das mit dem Selektieren jetzt folgendermaßen gelöst
Delphi-Quellcode:
if (gdSelected in State) then
    begin
      QUEUE_Grid.Canvas.Brush.Color := SelectColor;
      QUEUE_Grid.Canvas.FillRect(Rect);
      QUEUE_Grid.Canvas.Font.Color := clWhite;
    end
    else
      QUEUE_Grid.Canvas.Font.Color := clWindowText;
Hab dann auch noch mehr Möglichkeiten die den Focus anzupassen.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.325 Beiträge
 
Delphi XE2 Professional
 
#8

AW: DrawGrid Inhalt verschwindet beim Auswählen einer Zelle/Reihe

  Alt 5. Jan 2013, 10:42
if (gdSelected in State) then
Bin gestern ums verrecken nicht auf diese Anweisung gekommen
Hab mein Codebeispiel dementsprechend korrigiert
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi ( 5. Jan 2013 um 11:14 Uhr)
  Mit Zitat antworten Zitat
MeisterLampe

Registriert seit: 10. Dez 2012
16 Beiträge
 
Delphi XE2 Starter
 
#9

AW: DrawGrid Inhalt verschwindet beim Auswählen einer Zelle/Reihe

  Alt 6. Jan 2013, 18:37
Für alle die ein ähnliches Problem haben. Ich habe nun rausgefunden, woran es wirklich lag.
Und zwar fehlten 2 Codezeilen:

Rect1.Width := Rect.Width;

Rect2.Width := Rect.Width;

Also vollständig dann so:
Delphi-Quellcode:
procedure TForm1.DrawGridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
Var
  Rect1, Rect2: TRect;
  S: String;
begin
  Rect1.Left := Rect.Left + 5;
  Rect1.Top := Rect.Top;
  Rect1.Height := Rect.Height Div 2;
  { Wichtig } Rect1.Width := Rect.Width; { Wichtig }

  Rect2.Left := Rect.Left + 25;
  Rect2.Top := Rect.Top + (Rect.Height Div 2);
  Rect2.Height := Rect.Height DIV 2;
  { Wichtig } Rect2.Width := Rect.Width; { Wichtig }

  S := 'Text 1';
  DrawGrid.Canvas.Font.Color := clBlack;
  DrawGrid.Canvas.TextRect(Rect1, S, [tfVerticalCenter, tfSingleLine]);

  S := 'Text 2';
  DrawGrid.Canvas.Font.Color := $006B6B6B;
  DrawGrid.Canvas.TextRect(Rect2, S, [tfVerticalCenter, tfSingleLine]);
Ansonsten kann es passieren, dass Rect1 oder Rect2 einen negativen Wert bekommen und somit das TextRect verschwindet
  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 21:39 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