Autor Beitrag
ardely
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Do 28.02.13 11:59 
Ich hoffe ich habe die Anforderung richtig verstanden...
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66



BeitragVerfasst: Do 28.02.13 12:31 
Super, Danke für dein gutes Beispiel es klappt tadellos.
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Do 28.02.13 12:58 
*Hüstel* in auf Word anzuwenden ist gewagt.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Do 28.02.13 13:17 
@WasWeißDennIch , so problematisch wie Du sehe ich es nicht...
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Do 28.02.13 13:55 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  i, j: word;
begin
  i := 300;
  j := 300;
  if i in [100200, j] then
    ShowMessage('Gefunden');
end;

Wer da die Bereichsprüfung nicht aktiviert hat, sucht sich den Wolf.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 28.02.13 18:27 
Moin!

user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
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". :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
if Key in [Menge] then //1. Vergleich
  if Key = SomeKey then //2. Vergleich

im Gegensatz zum case.