| Autor |
Beitrag |
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 27.06.03 11:04
Hi,
in einem Stringgrid muß ich einzelne Zellen einer Sonderbehandlung unterziehen. Jetzt gibt es aber nur die Evente für das ganze Grid. Wie mache ich das für einzelne Zellen?
_________________ Gruß
Hansa
|
|
oetzgemoeh
      
Beiträge: 28
|
Verfasst: Fr 27.06.03 11:36
Zuletzt bearbeitet von oetzgemoeh am Sa 24.04.10 22:58, insgesamt 1-mal bearbeitet
|
|
foxy
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Fr 27.06.03 11:45
hansa meinste das du die zellen direkt ansprechen kannst???
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 27.06.03 12:03
Ich habe jetzt mal folgendes probiert:
Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin if not ACol IN [0,6] then CanSelect := false; end; |
Es geht darum: Grid hat ca. 10 Spalten, nur in die erste und 7. soll etwas eingetragen werden können. Ich kann aber in alle was eingeben.
_________________ Gruß
Hansa
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Fr 27.06.03 12:07
Dann versuchs mal hiermit (stammt aus einem Proggi von mir):
Delphi-Quelltext 1: 2: 3: 4:
| if (ACol=0) or (ACol=6) then (Sender as TStringGrid).Options:=[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goEditing,goAlwaysShowEditor] else (Sender as TStringGrid).Options:=[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect]; |
Evtl. musst Du noch ein paar Options ändern, aber das müsste gehen.
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Fr 27.06.03 12:16
warum mit allen optionen ?
Delphi-Quelltext 1: 2: 3: 4: 5:
| with (Sender as TStringGrid) do if (ACol=0) or (ACol=6) then Options:=options+[goEditing] else Options:=options-[goEditing] |
Mfg Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 27.06.03 12:17
Hi,
Du hast daraus eine allgemeine Prozedur gemacht wies aussieht. Ja und die Optionen von Hand gesetzt. Das or am Anfang spielt keine Rolle. Hmm. Was macht das CanSelect denn dann überhaupt ? Ich habe gedacht, das würde goEditing intern auf true oder false setzen.
Muß das später testen. Die nächste Frage ist : Wie stelle ich fest, daß eine bestimmte Zelle verlassen wird ?
_________________ Gruß
Hansa
|
|
Peter2002
      
Beiträge: 103
Win XP, Win 7
Delphi 2007 / XE3
|
Verfasst: Fr 27.06.03 12:17
Wie man das ReadOnly nur für bestimmte Spalten setzt weis ich nicht.
Ich würde das ganze Grid auf ReadOnly setzen und dann auf die entsprechende Zelle in Edit-Feld zeichnen, in das du dann was eingeben kannst und den wert dann ins Grid schreibst.
Wie man jetz aber das Edit auf das Grid zeichnet, kann ich dir so aus dem FF nicht beantworten. Müsst sich hier irgendwo finden. Sonst evt. SwissDelphiCenter
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Fr 27.06.03 12:20
Mit meinem Code oder dem Zusatz von Keldorn kannst Du nur die Spalten 0 und 6 editieren, bei anderen gehts nicht.
Und feststellen, dass eine Zelle verlassen wird brauchste nicht, Du brauchst nur feststellen, wann eine Zelle angeklickt wird, eben im CellClick-Event. Funktioniert bei mir einwandfrei.
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Fr 27.06.03 12:23
| hansa hat folgendes geschrieben: | Hi,
Du hast daraus eine allgemeine Prozedur gemacht wies aussieht. Ja und die Optionen von Hand gesetzt. Das or am Anfang spielt keine Rolle. Hmm. Was macht das CanSelect denn dann überhaupt ? Ich habe gedacht, das würde goEditing intern auf true oder false setzen.
Muß das später testen. Die nächste Frage ist : Wie stelle ich fest, daß eine bestimmte Zelle verlassen wird ? |
warum stellst du die Frage hier überhaupt nochmal?
www.delphipraxis.net...highlight=stringgrid
da steht die antwort auch schon drin
canselect: wenn es auf true gesetzt wird, läßt sich die Zelle selektieren, wenn auf false, kannst du sie nicht auswählen (weder per cursor noch per maus)
Zelle verlassen:
gibt nicht direkt, aber wenn du eine neue Zelle auswählst, wird dann ja wieder onselectcell für diese ausgelöst. Du kannst dann den row und Col wert (nicht acol!) des Grids abfragen und erhälst dann die "alte Zelle"
Mfg Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 27.06.03 12:23
Ich bin echt etwas verblüfft. Ich dachte, das wäre eine NewBie Frage. Ich muß doch die Zellen einzeln behandeln können, für was weiß denn ich. Aber außer OnCellSelect finde ich nichts für die Zellen.
_________________ Gruß
Hansa
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Fr 27.06.03 12:27
Was brauchst Du denn auch mehr? Ich versteh im Moment absolut nicht mehr Dein Problem, die Lösung, wie man einzelne Spalten nicht editierbar macht, steht doch schon 2mal da, was brauchst Du denn noch?
In SelectCell kannst DU doch alles mit der Zelle machen, was Du willst....

|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Fr 27.06.03 12:29
| hansa hat folgendes geschrieben: | | Ich bin echt etwas verblüfft. Ich dachte, das wäre eine NewBie Frage. Ich muß doch die Zellen einzeln behandeln können, für was weiß denn ich. Aber außer OnCellSelect finde ich nichts für die Zellen. |
wieso? wo liegt das problem? was willst du tun?
es ist doch kein Problem herauszufinden, welche Zelle selektiert ist (col und row-werte) oder rauszufinden, wohin geklickt wurde (mousetocell) usw. Die erforderlichen Zellwerte lassen sich doch einfach ermitteln...
edit: zu langsam 
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|