AGB  ·  Datenschutz  ·  Impressum  







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

Text mittig (center) im Stringgrid

Ein Thema von derseitzer · begonnen am 4. Jan 2018 · letzter Beitrag vom 10. Jan 2018
Antwort Antwort
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Text mittig (center) im Stringgrid

  Alt 4. Jan 2018, 10:24
Delphi-Version: 10 Seattle
Halloo,

habe von hier: https://www.delphi-treff.de/tipps-tr...id-ausrichten/
mir den Code für das zentrieren von texten im Stringgrid geholt, allerdings ist mir beim Austesten aufgefallen, das wenn ich vor dem beschreiben einer Zelle diese markiert habe (mit der Maus Linksklick) der Text doppelt eingefügt wird. Einmal mittig und einmal linksbündig..

Gerade beim Start des Programmes fokusiert schon automatisch die erste Zelle und fügt überall exakt und mittig Texte ein.. außer bei der fokusierten ersten Zelle.
Hattet ihr das problem auch schon?
MFG derseitzer
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

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

AW: Text mittig (center) im Stringgrid

  Alt 4. Jan 2018, 10:51
Hallo,

wenn ich im StringGrid einen Text mittig darstellen will, dann mach ich das immer so:

Delphi-Quellcode:
procedure TSetupForm.StringGrid_ZugzieleDrawCell(Sender: TObject;
  ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  Diff_Top: Integer;
  Diff_Left: Integer;
  S_Text: String;

begin
  //Text auslesen
  S_Text := StringGrid_Zugziele.Cells[ACol, ARow];

//bin mir jetzt nicht sicher, ob man diese Zeile für den Text benötigt
//ändere im Originalcode auch noch die Farbe
// StringGrid_Zugziele.Canvas.FillRect(Rect);

  //Text mittig berechnen
  Diff_Top := (Rect.Bottom - Rect.Top - StringGrid_Zugziele.Canvas.TextHeight(S_Text)) div 2;
  Diff_Left := (Rect.Right - Rect.Left - StringGrid_Zugziele.Canvas.TextWidth(S_Text)) div 2;

  StringGrid_Zugziele.Canvas.TextRect(Rect, Rect.Left + Diff_Left, Rect.Top + Diff_Top, S_Text);

end;
mfg
Helmi

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

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: Text mittig (center) im Stringgrid

  Alt 4. Jan 2018, 15:21
Hallo Helmi,

Viele Dank für deine Antwort und dein Codebeispiel. Ich habe es getestet und der Fehler kommt bei mir hier genauso vor!
Markiere ich eine Zelle und beschreibe alle, funktioniert dein Code für alle Zellen, mit Ausnahme der einen markierten :/

Edit: mir ist aufgefallen, dass das nur vorkommt, wenn ich die Texte mit eine Button.click einsetze und nicht, wenn ich sie z.B. mit Form.Show einsetze. In meinem Fall wäre das Problem dann nicht so tragisch

Geändert von derseitzer ( 4. Jan 2018 um 15:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

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

AW: Text mittig (center) im Stringgrid

  Alt 4. Jan 2018, 15:29
kann es sein, dass es nur so ausschaut, als ob es doppelt ist, weil der Editor der Zelle aktiv ist und dieser linksbündig ist?
schalte doch mal zum Füllen unter Options goEditing aus
mfg
Helmi

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

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#5

AW: Text mittig (center) im Stringgrid

  Alt 4. Jan 2018, 16:56
Entscheident ist nicht ob die Zelle den Focus hat, sondern ob das Grid im Editormodus ist.
In dem Fall wird nähmlich nicht die durch deinen Code gezeichnete Zelle angezeigt, sondern an dieser Stelle der InplaceEditor.

Options.goAlwaysShowEditor = False
>>> Der Editormode muss vom Anwender erst durch eine Eingabe(Taste) aktiviert werden.

EditorMode = True/False
>>> Den Editor programmgesteuert ein oder ausblenden.
  Mit Zitat antworten Zitat
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: Text mittig (center) im Stringgrid

  Alt 10. Jan 2018, 09:27
Tut mir leid für die späte Antwort,

Ich habe GoEditing, sowie alwyasshoweditor auf False und es passiert per Button click trotzdem. Egal, ob mein Programmcode oder der von Helmi - wenn Ihr Text per Buttonclick einfügt wird bei der ersten Zelle der Text linksbündig, woie mittig angezeigt.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Text mittig (center) im Stringgrid

  Alt 10. Jan 2018, 09:34
Hallo,
mach mal ein Minimalbeispiel, dann eine Zip-Datei und hier posten.

ich würde hier eh TAdvStringGrid benutzen, auch wenn es etwas kostet.
Heiko
  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 12:46 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