AGB  ·  Datenschutz  ·  Impressum  







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

StringGrid DragMode Color

Ein Thema von PaddyVII · begonnen am 27. Jan 2015 · letzter Beitrag vom 28. Jan 2015
Antwort Antwort
Benutzerbild von PaddyVII
PaddyVII

Registriert seit: 20. Nov 2014
Ort: Pforzheim
75 Beiträge
 
Delphi XE6 Enterprise
 
#1

StringGrid DragMode Color

  Alt 27. Jan 2015, 10:46
Guten Mittag alle zusammen,

ich hätt da mal ne kleine frage: und zwar färbe ich mit

Delphi-Quellcode:
  if StringGrid.Cells[ACol, ARow] = 'Othen
  begin
    stringGrid.Canvas.Brush.Color := clSkyBlue;
Eine Zelle ein und schreibe ein 'O' Hinein(beim Click) (bzw. schreibe erst ein 'O' hinein und dann färbe ich die Zelle, dies geschieht an einer anderen stelle im code, is ja auch irrelevant;D). Wichtig ist, dass BEIDES passiert, sprich: ein 'O' geschrieben wird UND sich die zelle blau färbt! Das passt soweit auch

Jedoch nicht, wenn ich eine Zelle nehme und sie verschiebe (Drag) innerhalb des stringgrids. Dann werden alle Zellen (Innherhalb der verschiebung) hellblau, jedoch wird kein 'O' hineingeschrieben, was auch nicht die absicht ist- mein ansatz: DRAG MODUS AUSSCHALTEN

und schon steh ich vor dem Problem: Kann mir jemand sagen, wie ich diesen Drag mode INNERHALB der stringGrid und der Zellen ausschalten kann??


p.s: Hab schon alle möglichen einstellungen im Objektinspektor die was mit Drag zutunhatten Geändert/deaktiviert - erfolglos!!

Ich habe versucht, mein problem soo genau wie möglich zu umschreiben, tut mir leid wenns bisschen kompliziert klingt...

...kann mir jemand die lösung ERKLÄREN sprich nicht nur code schreiben??

Ich danke euch im Vorraus

LG

Paddy_VII
"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."
Dan Rather
  Mit Zitat antworten Zitat
Benutzerbild von PaddyVII
PaddyVII

Registriert seit: 20. Nov 2014
Ort: Pforzheim
75 Beiträge
 
Delphi XE6 Enterprise
 
#2

AW: StringGrid DragMode Color

  Alt 27. Jan 2015, 12:15
okay, für die dies interessiert: wenn man eine Farbe vorher nicht initialisiert (in meinem Fall brauchte ich weiß)

stringgrid.Canvas.Brush.Color := clWhite; dann kommt Delphi etwas durcheinander und nimmt sich für alle Farbaktionen (bei mir der DragMode) einfach die letzte Farbe...

von demher, als tipp wer mit Canvas arbeitet sollte immer vorher seine farbe setzten (das klügste wäre natürlich weiß)...
"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."
Dan Rather
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: StringGrid DragMode Color

  Alt 28. Jan 2015, 07:07
von demher, als tipp wer mit Canvas arbeitet sollte immer vorher seine farbe setzten (das klügste wäre natürlich weiß)...
Ich glaube in vielen On(Custom)Draw Methoden wird das sinngemäß eher so gemacht, das man sich die Farbe merkt:

Delphi-Quellcode:
var oldBrushColor:TColor;
begin
[...]
oldBrushColor:=stringgrid.Canvas.Brush.Color;
stringgrid.Canvas.Brush.Color := clSkyBlue;
//Mach was
stringgrid.Canvas.Brush.Color:=oldBrushColor;
[...]
end;
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von PaddyVII
PaddyVII

Registriert seit: 20. Nov 2014
Ort: Pforzheim
75 Beiträge
 
Delphi XE6 Enterprise
 
#4

AW: StringGrid DragMode Color

  Alt 28. Jan 2015, 07:19
könnte klappen, nur muss man doch dann die initialisierung VOR der zuweisung machen oder??
"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."
Dan Rather
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: StringGrid DragMode Color

  Alt 28. Jan 2015, 07:48
Genau für dieses Szenario gibt es extra die Klassen Delphi-Referenz durchsuchenTBrushRecall und Delphi-Referenz durchsuchenTFontRecall.

Eine sinnvolle Ergänzung wäre es, wenn man sich noch ein Interface dafür bauen würde, dann käme man für die meisten mit nur einer Zeile Code aus. Ansonsten sieht das so aus:
Delphi-Quellcode:
procedure WorkWithCanvas( ACanvas : TCanvas );
var
  LBrushRecall : TBrushRecall;
begin
  LBrushRecall := TBrushRecall.Create( ACanvas.Brush );
  try

    ACanvas.Brush.Color := clRed;

  finally
    LBrushRecall.Free;
  end;
  // Jetzt ist ACanvas.Brush wieder wie vorher
end;
Mit einem Interface könnte das so aussehen
Delphi-Quellcode:
procedure WorkWithCanvas( ACanvas : TCanvas );
begin
  TBrushRecallFactory.Construct( ACanvas.Brush ); // erzeugt ein Interface

  ACanvas.Brush.Color := clRed;

end;
// nach dem Verlassen der Methode wird die Interface Referenz zerstört
// damit auch der Recall und damit der ACanvas.Brush wieder hergestellt :o)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (28. Jan 2015 um 07:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von PaddyVII
PaddyVII

Registriert seit: 20. Nov 2014
Ort: Pforzheim
75 Beiträge
 
Delphi XE6 Enterprise
 
#6

AW: StringGrid DragMode Color

  Alt 28. Jan 2015, 08:06
Ist das TBrushRecall denn für diesen "DraMode" innerhalb des grids dann verantwortlich?
"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."
Dan Rather
  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 00:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz