AGB  ·  Datenschutz  ·  Impressum  







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

Cursor-Position bei Edit-Komponente bestimmen

Ein Thema von Sascha L · begonnen am 4. Jun 2004 · letzter Beitrag vom 8. Jun 2004
Antwort Antwort
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#1

Cursor-Position bei Edit-Komponente bestimmen

  Alt 4. Jun 2004, 18:57
Hallo,

ich habe ein Problem. Hier erstmal der Code:

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
x:integer;
begin
if not (key in [#12]) then begin
if (key in [#8]) then begin
x:= Length(Label2.Caption);
Label2.Caption := Copy(Label2.Caption,1,x-1);
end
else begin
Label2.Caption := (Label2.Caption + key);
end
end;
if (key = GetCharFromVKey(vk_divide))or(key = GetCharFromVKey(vk_subtract))or(key = GetCharFromVKey(vk_add))or(key = GetCharFromVKey(vk_multiply)) then begin
hoch:=false;
end
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
test:string;
begin
x:= Length(Edit1.Text);
test:= GetCharFromVKey(key);
 if Edit1.Text <> 'then begin
  if (Shift=[ssAlt]) and ((test='1')or(test='2')or(test='3')or(test='4')or(test='5')or(test='6')or(test='7')or(test='8')or(test='9')or(test='0')) then begin
  Label2.Caption := (Label2.Caption+'^'+test);
   if hoch = false then begin
   Edit1.Text := (Edit1.Text+'^'+GetCharFromVKey(key));
   hoch := true;
   end
   else begin
   Edit1.Text := (Edit1.Text+GetCharFromVKey(key));
   end ;
  end
 end
end;
Das ganze soll folgendes bewirken:

Ich möchte in ein Edit-Feld eine Funktion eingeben. z.B. f(x)= x³+2x²+9x (wobei "f(x)=" nicht mit eingegeben wird).

Da Edit-Felder ja keine Exponenten darstellen können, habe ich nach langem Suchen eine Lebel-Komponente gefunden, die auch die Exponenten anzeigen kann (=> sub/superscript).

Wenn ich etwas ins Edit-Feld eingebe, soll es auch gleichzeitig im Label dargestellt werden. Jedoch gibt es nun einen Unterschied:

Im Lebel wird der Exponent richtig dargestellt und im Edit-Feld mithilfe von '^'. Wenn man die Alt-Taste in Verbindung mit einer Zahl drückt, dann erkennt das Programm, dass es sich hierbei um einen Exponenten handelt. Also trägt er im Edit-Feld '^'+dieZahl ein. Wenn ich aber z.B. x^23 haben möchte, soll er er nicht x^2^3 machen. Daher der Code oben.

Das klappt auch alles soweit. Das Problem nun ist jedoch, dass immer wenn ich die Alt-Taste drücke, der blinkende Cursor zum Anfang des Edit-Felds springt. D.h. wenn man danach wieder eine Variable oder eine Zahl eingibt, erscheint diese ganz am Anfang, anstatt am Ende.

Warum macht der das eigentlich? Soetwas steht ja nirgendwo im Code mit drin....

Gibt es nun die Möglichkeit, am Ende des Codes einen Befehl zu schreiben, der veranlasst, dass der Cursor wieder hinter die letzte Variable/Zahl springt?

Viele Grüße
Sascha
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#2

Re: Cursor-Position bei Edit-Komponente bestimmen

  Alt 4. Jun 2004, 21:28
da du den text änderst, spring er zurück an den anfang. du könntest dann entweder wieder ans ende springen

noch ein tipp: mach dir eine funktion, die du immer beim keypress/edit1change aufrufst, die einfach den eingegebenen string interpretiert, und dann im label darstellt
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Cursor-Position bei Edit-Komponente bestimmen

  Alt 5. Jun 2004, 09:46
Danke für die Tipps, aber das ist irgendwie nicht Sinn und Zweck der Sache, wenn ich erst wieder ans Ende springen muss. Hättest du Lust, wenn du eine Funktion eingibst, nach jedem Exponenten erstmal wieder an Ende zu springen?
Sascha
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.882 Beiträge
 
Delphi 12 Athens
 
#4

Re: Cursor-Position bei Edit-Komponente bestimmen

  Alt 8. Jun 2004, 13:01
SelStart setzen!!
Andreas
Monads? Wtf are Monads?
  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 00:19 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