Autor |
Beitrag |
ardely
      
Beiträge: 66
|
Verfasst: Do 28.02.13 11:18
Guten Tag
Wenn ich der vertikaler scrollbar eines Richedit bewegen, nach unten oder nach oben, das Caret Position bleibt im Text, also der Text bewegt sich mit dem Caret.
Aber wenn ich die Taste Page (up/down) drücke das Caret bleibt immer sichtlich, bewegt sich nicht mit dem Text.
Gibt es eine Möglichkeit dass der Caret am Text Position bleibt beim Tastendrücken Page-Up / Page-Down !
Danke für Ihren Vorschlag
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 28.02.13 11:59
Ich hoffe ich habe die Anforderung richtig verstanden...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key in [VK_PRIOR,VK_Next] then begin if key=VK_PRIOR then PostMessage(Richedit1.Handle,WM_VScroll,SB_PAGEUP,0) else if key=VK_Next then PostMessage(Richedit1.Handle,WM_VScroll,SB_PAGEDOWN,0);
key := 0; end;
end; |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Für diesen Beitrag haben gedankt: ardely
|
|
ardely 
      
Beiträge: 66
|
Verfasst: Do 28.02.13 12:31
Super, Danke für dein gutes Beispiel es klappt tadellos.
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Do 28.02.13 12:58
*Hüstel* in auf Word anzuwenden ist gewagt.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case key of VK_PRIOR: PostMessage(Richedit1.Handle,WM_VScroll,SB_PAGEUP,0); VK_Next: PostMessage(Richedit1.Handle,WM_VScroll,SB_PAGEDOWN,0); else Exit; end; key := 0; end; |
Wen das Exit stört, der kann auch das Nullen in einen begin-end-Block für die beiden Fälle schreiben,
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 28.02.13 13:17
@WasWeißDennIch , so problematisch wie Du sehe ich es nicht...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| var i:Word; begin for I := 0 to High(Word) do if i in [VK_PRIOR,VK_Next] then memo1.lines.add(IntToStr(i))
end; |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Do 28.02.13 13:55
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var i, j: word; begin i := 300; j := 300; if i in [100, 200, j] then ShowMessage('Gefunden'); end; |
Wer da die Bereichsprüfung nicht aktiviert hat, sucht sich den Wolf.
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 28.02.13 14:19
Ist schon klar, aber mein Set war ja gültig ...
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Do 28.02.13 14:23
Auch klar, sonst hätte der Compiler das bereits bemängelt, da er es bei Konstanten bereits zur Compiletime bemerken kann. Trotzdem würde ich so etwas nach Möglichkeit vermeiden, da man sonst Gefahr läuft, Fehler wie in meinem Beispiel zu machen. Ganz abgesehen davon muss ich bei der case-Abfrage nur einmal vergleichen, aber das ist eher nebensächlich.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 28.02.13 18:27
Moin!
WasWeißDennIch hat folgendes geschrieben : | Ganz abgesehen davon muss ich bei der case-Abfrage nur einmal vergleichen, aber das ist eher nebensächlich. |
Und falsch.  Wird erst richtig, wenn du ein "minimal" vor dem "einmal" einfügst. Wenn du einen Case suchst, der nicht in der Liste ist, musst du für alle Cases einen Vergleich "ausgeben".
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Do 28.02.13 18:48
Meine Güte, lasst uns ein paar Erbsen zählen und anschließend ein paar Haare spalten. Was ich meinte, war:
Delphi-Quelltext 1: 2:
| if Key in [Menge] then if Key = SomeKey then |
im Gegensatz zum case.
|
|