AGB  ·  Datenschutz  ·  Impressum  







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

markierung im Stringgrid verhindern

Ein Thema von kiar · begonnen am 5. Apr 2004 · letzter Beitrag vom 6. Apr 2004
Antwort Antwort
Benutzerbild von kiar
kiar

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

markierung im Stringgrid verhindern

  Alt 5. Apr 2004, 15:26
hallo,

wenn ein TSringgrid den fokus erhält, wird die zell markiert, die nach fixedRow und fixedCol kommt.
in der Regel zelle[1,1].

wie kann ich dies verhindern?

Ziel ist es in einer Terminplanung, zu verhindern, das in diese zelle was reinkopiert werden kann, wenn diese
zelle gesperrt ist.

wie ich das editieren erhindern kann, ist klar. wei aber das reinkopieren:
so wird das editieren verhindert:
Delphi-Quellcode:
procedure TfrmMain.MyMouseMove(var msg:TWMMouse);
var
  ACol,
  ARow : integer;
begin
   ACol:= Stringgrid1.Col;
   ARow:= Stringgrid1.Row;
   Stringgrid1.MouseToCell(msg.XPos,msg.YPos,ACol,ARow);
     // ist 'frei' dann Eingabe unmöglich machen
     if DayList[acol].isfree Then
        Stringgrid1.Options:= Stringgrid1.Options - [goEditing]
     else
        Stringgrid1.Options:= Stringgrid1.Options + [goEditing];

end
aber ich kann immer noch in diese zellen was kopieren.

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

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#2

Re: markierung im Stringgrid verhindern

  Alt 5. Apr 2004, 20:41
Also ich war immer der Meinung, dass wenn eine Zelle nicht editiert werden darf (kein goEditing in Options), dass dann der Inhalt auch nicht durch reinkopieren geändert/editiert werden kann.


In der Ereignis-Prozedur OnSelectCell des SringGrid's kannst du zum Beispiel so verhindern, dass die Zelle [1, 1] markiert werden kann, demnach kann man dort auch nicht's reinkopieren.

Delphi-Quellcode:
Procedure TForm_.StringGridXSelectCell(Sender: TObject; ACol, ARow: Integer; Var CanSelect: Boolean);
  Begin
    CanSelect := (ACol <> 1) or (ARow <> 1);
  End;


Ich würde dir auch empfehlen das andere auch noch dort reinzumachen, da das bei dir ja in 'ner MouseMove-Ereignisprozedure steht, könnte man ja locker die Felder auch mir der Tastatur anspringen, ohne das sie gesperrt werden

Delphi-Quellcode:
Procedure TForm_.StringGridXSelectCell(Sender: TObject; ACol, ARow: Integer; Var CanSelect: Boolean);
  Begin
    CanSelect := (ACol <> 1) or (ARow <> 1);

   // ist 'frei' dann Eingabe unmöglich machen
   if DayList[ACol].isfree Then
      Stringgrid1.Options := StringGrid1.Options - [goEditing]
   else
      Stringgrid1.Options := StringGrid1.Options + [goEditing];
  End;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

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

Re: markierung im Stringgrid verhindern

  Alt 5. Apr 2004, 21:07
hallo himitsu,

der fehler ist dadurch aufgetreten, weil Ostermontag frei ist und der montag bei mir im stringgrid auf col 1 liegt.

ich müsste also oncellselect immer auf den aktuellen stand bringen.

werde es mal versuchen.

danke


raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  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 im Stringgrid verhindern

  Alt 5. Apr 2004, 21:13
hallo himitsu,

das funktioniert nicht, erst wird immer die zelle[1,1] beim neustart markiert. es müsste schon vorher abgefragt werden.

mist

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

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: markierung im Stringgrid verhindern

  Alt 6. Apr 2004, 07:54
Hallo

da gibts es eine Möglichkeit mit der Selection:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
const KeineSelection : TGridRect = (left:-1;top:-1;right:-1;bottom:-1);
begin
  StringGrid1.Selection := KeineSelection;
end;
Manko an der Sache ist, daß du eine Exception auslöst, wenn das grid dann den Focus hat und du außerhalb des grids am mausrad drehst (ist zumindestens bei mir so (D6 pro, W2K). In irgendeinem Forum war dieses Problem schonmal. Wenn ich mich recht erinnere, konnte man die onmousewheel ereignisse abfragen und dort das grid selber scrollen um die exception zu verhindern.

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  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 07:12 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