AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Markierung von Text in StringGrid-Zelle umgehen
Thema durchsuchen
Ansicht
Themen-Optionen

Markierung von Text in StringGrid-Zelle umgehen

Ein Thema von gordon freeman · begonnen am 29. Mär 2005 · letzter Beitrag vom 29. Mär 2005
Antwort Antwort
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#1

Markierung von Text in StringGrid-Zelle umgehen

  Alt 29. Mär 2005, 17:11
Hi Leute,

ich möchte beim Drücken einer Zahlen-Taste die Zahl mit einem vorangestellten '+' in eine Zelle eine Stringgrid schreiben. Das ganze mache ich folgendermaßen:

Delphi-Quellcode:
procedure TForm1.StringGrid1KeyPress(Sender:TObject;var Key:Char);
begin
if (key in ['0'..'9') and (length(StringGrid1.Cells[aktCellX,aktCellY]) = 0) then
  begin
   StringGrid1.Cells[aktCellX,aktCEllY] := '+' + key;
   key := #0;
  end;
end;
Allerdings wird bei einem erneuten Tastendruck sofort der gesamte Zelleninhalt wieder übrschreiben.

z.B:
gibt der Benutzer eine '4' ein, so erscheint in der Zelle '+4', wird direkt danach eine '2' eingegeben, so erscheint nicht '+42', sondern '2'.

Wie kann man das umgehen???

tia, read you, gordon
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#2

Re: Markierung von Text in StringGrid-Zelle umgehen

  Alt 29. Mär 2005, 18:07
hallo vor dem ereignis ein
Delphi-Quellcode:

stext:='';
also

Delphi-Quellcode:
var
   sText: String;
begin
 sText:= '';
if (key in ['0'..'9') and (length(StringGrid1.Cells[aktCellX,aktCellY]) = 0) then
  begin
   StringGrid1.Cells[aktCellX,aktCEllY] := '+' + key;
   key := #0;
  end;
end;
/// mann dicke finger
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#3

Re: Markierung von Text in StringGrid-Zelle umgehen

  Alt 29. Mär 2005, 18:17
Hallo,
@kiar >> Glaub ich nicht, mit einer Variable die nicht genutzt wird

@gordon freeman >> der Else-Teil fehlt, so klappt es:
Delphi-Quellcode:
procedure TForm1.StringGrid1KeyPress(Sender:TObject;var Key:Char);
begin
if (key in ['0'..'9']) and (length(StringGrid1.Cells[aktCellX,aktCellY]) = 0) then
  begin
   StringGrid1.Cells[aktCellX,aktCellY] := '+' + key;
   //key := #0; ist doch nur erforderlich wenn Tastendruck aufgehoben werden soll!
  end
  else
    StringGrid1.Cells[aktCellX,aktCellY] := StringGrid1.Cells[aktCellX,aktCellY]+ key;
end;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#4

Re: Markierung von Text in StringGrid-Zelle umgehen

  Alt 29. Mär 2005, 18:20
hallo,

hehe das ist mir jetzt wo du es sagst auch aufgefallen, also müsste man vorher dem feld sText zuweisen

also so: StringGrid1.Cells[aktCellX,aktCellY] := sText; raik

so jetzt habe ich mir den thread nochmal durchgelesen und Lannes du hast recht , also nochmal
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Markierung von Text in StringGrid-Zelle umgehen

  Alt 29. Mär 2005, 20:16
@Lannes Wenn ich es so schreibe, wie du geschrieben hast wird wieder nur die Zahl angezeigt, die der User eingetiptt hat, kein + davor

@kiar Wie meinst du das mit 'ner zusätzlichen String-Variable? In wie weit soll das helfen
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#6

Re: Markierung von Text in StringGrid-Zelle umgehen

  Alt 29. Mär 2005, 20:52
hallo habe das eben ausprobiert, so bald die aktuelle zelle den focus erhält wird nur die zahl eingegeben.

wenn ich folgendes realisiere
Delphi-Quellcode:

 if (key in ['0'..'9']) and (length(SG1.Cells[2,2]) = 0) then
         SG1.Cells[2,2] := ' + ' + key
      else
         SG1.Cells[2,2] := SG1.Cells[2,2]+ key;
und eine andere zelle als 2,2 den fokus erhält geht es

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#7

Re: Markierung von Text in StringGrid-Zelle umgehen

  Alt 29. Mär 2005, 21:04
Hallo,
Zitat von gordon freeman:
@Lannes Wenn ich es so schreibe, wie du geschrieben hast wird wieder nur die Zahl angezeigt, die der User eingetiptt hat, kein + davor
wo weist Du den Variablen "aktCellX,aktCellY" die Werte zu?
Ich nutze dafür das Ereignis OnSelectCell.
Hab meinen Code gerade nochmal getestet, er funktioniert
Allerdings muss dafür goEditing auf False stehen.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Markierung von Text in StringGrid-Zelle umgehen

  Alt 29. Mär 2005, 21:21
Zitat von kiar:
und eine andere zelle als 2,2 den fokus erhält geht es
Hm daran liegt es, bei mir soll der Benutzer ja in der Zelle weiterschreiben können, sodass Zahlen wie '+42' entstehen können. Das heißt, der Fokus soll in der Zelle bleiben, aber man soll mit einer weiteren Eingabe nicht vorherige ersetzen!

Zitat von Lannes:
wo weist Du den Variablen "aktCellX,aktCellY" die Werte zu?
Ich nutze dafür das Ereignis OnSelectCell.
Hab meinen Code gerade nochmal getestet, er funktioniert Rolling Eyes
Allerdings muss dafür goEditing auf False stehen.
Ich benutze auch OnSelectCell. Hab GoEditing auf true stehen. Das wird doch benötigt, damit der Benutzer Eingaben direkt im StringGrid machen kann, oder
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#9

Re: Markierung von Text in StringGrid-Zelle umgehen

  Alt 29. Mär 2005, 21:47
Hallo,

geht mit "goEditing auf False", weil Du ja die Tasten abfängst und direkt den Wert zuweist.
Hast dann zwar keinen Cursor.
Teste es mal.

Erklärung bzgl. "goEditing auf False".
Steht goEditing auf True wird der Inplace-Editor aufgerufen und das Ereignis OnKeyPress wird nicht mehr aufgerufen.
Mehr Info zum Inplace-Editor findest Du dort:
1.StringGrid-Zelle während des Editierens farbig?
oder das, dann aber ein Editfeld einsetzen:
2....eine Combobox als InPlace Editor in einem StringGrid verwenden?
oder
Das Ereignis OnGetEditText tritt ein bevor der Inplace-Editor aufgerufen wird,
da könntest Du mit Value ein Pluszeichen vorgeben.
Ist aber auch nicht so gut, weil dann das Pluszeichen selektiert wird.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Markierung von Text in StringGrid-Zelle umgehen

  Alt 29. Mär 2005, 22:03
Hab 'goediting' ausgeschaltet und jetzt funktioniert es
big thx 2 Lannes und Kiar!!!
  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:44 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