Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wenn . dann Fenster öffnen wie bei Delphi (https://www.delphipraxis.net/30923-wenn-dann-fenster-oeffnen-wie-bei-delphi.html)

Christian18 1. Okt 2004 12:37

Re: Wenn . dann Fenster öffnen wie bei Delphi
 
Hallo, das mit der Positionierung passt bei mir irgendwie nicht so richtig. ich habe es jetzt mit einer ListBox1 gemacht, aber die Position dieser ListBox1 ist falsch. Die Listbox wird nicht am punkt angezeigt. Was kann ich dagegen tun???

Mit freundlichen Grüßen

Christian18

Aenogym 1. Okt 2004 12:44

Re: Wenn . dann Fenster öffnen wie bei Delphi
 
hi christian,

[oh]TRichEdit.CaretPos;[/oh] liefert dir die Koordinaten, des Carets im Clientbereich des Richedits.
du musst also noch die top- und left-werte des formulars und des richedits hinzuaddieren und dein fenster erscheint an der richtigen stelle.

sprich:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  form_code.left := form1.left + richedit1.left + richedit1.caretpos.x;
  form_code.top := form1.top + richedit1.top + richedit1.caretpos.y;
  form_code.show;
end;
Aenogym

Christian18 1. Okt 2004 12:48

Re: Wenn . dann Fenster öffnen wie bei Delphi
 
das hatte ich auch schon versucht, funktioniert aber leider auch nicht.

Aenogym 1. Okt 2004 13:33

Re: Wenn . dann Fenster öffnen wie bei Delphi
 
hm, das verstehe ich nicht......
dann muss caretPos einen falschen wert zurückliefern
ich habs grad bei mir getestet und es klappt auch nicht...
aber rein theorethisch muss es so gehen...

Aenogym

Christian18 1. Okt 2004 13:44

Re: Wenn . dann Fenster öffnen wie bei Delphi
 
ja theorisch ja. das denke ich auch, aber praktisch funktioniert das nicht. ich weiß auch nicht wieso, deshalb schreibe ich ja hier ins forum.

Mit freundlichen Güßen

Christian18

Aenogym 1. Okt 2004 13:48

Re: Wenn . dann Fenster öffnen wie bei Delphi
 
aha.

die delphi-hilfe erzählt mal wieder dünnpfiff ;)
caretPos gibt nicht die pixel-koordinaten des carets zurück, sondern die spalte und die zeile...

da heißt es dann: umrechnen.

hier mal mein (getesteter) code:

Delphi-Quellcode:
  if key = '.' then
  begin
    form2.left := form1.Left + richedit1.Left + 
      richedit.CaretPos.x * form1.canvas.TextWidth('W') +
      (form1.width - form1.ClientWidth);   //abziehen des fensterrahmens

    form2.top := form1.top + richedit.top +
      richedit.caretpos.y * form1.canvas.Textheight('W') +
      (form1.height - form1.ClientHeight); //abzeihen des fensterrahmen

    form2.show;
  end;
form2 ist das fenster, welches aufklappt, wenn man . eingibt

nachtrag: form1.canvas angefügt (damit du es besser siehst ;)). du müsstest dem canvas noch die schriftart den memo's geben, damit es die text-größe richtig ausgibt...

hoffe, dass dir das hilft,
Aenogym

Christian18 1. Okt 2004 14:06

Re: Wenn . dann Fenster öffnen wie bei Delphi
 
hi,

kannst du mir mal dein Projekt schicken?? denn bei mir funktioniert es immer noch nicht.

Aenogym 1. Okt 2004 14:26

Re: Wenn . dann Fenster öffnen wie bei Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
jo,

ich habs nochmal überarbeitet :)
ich hab in dem projekt eine listbox benutzt.
aber der code für die benutzung eines formulars ist auch drin.

Aenogym

Christian18 1. Okt 2004 14:56

Re: Wenn . dann Fenster öffnen wie bei Delphi
 
ich weiß jetzt warum es bei mir nicht funktioniert hat, ich habe eine klammer vergessen. :-D

Christian18 1. Okt 2004 14:59

Re: Wenn . dann Fenster öffnen wie bei Delphi
 
wofür ist eigentlich was "W"???

Delphi-Quellcode:
(memo1.CaretPos.x * canvas.TextWidth('W')) + canvas.TextWidth('W');


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr.
Seite 2 von 3     12 3      

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