Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Alt Return drücken (https://www.delphipraxis.net/147907-alt-return-druecken.html)

Dumpfbacke 18. Feb 2010 19:19


Alt Return drücken
 
Hallo,
ich möchte eine Test in ein String eintragen. Dieses ist ja kein Problem. nun möchte in jedoch im Text noch ALT Return zwischen zwei Worten eintragen. Gib es hierzu ein ASCII Code dafür oder wie kann ich es machen ?

Dumpfbacke

chaosben 18. Feb 2010 19:27

Re: Alt Return drücken
 
Alt+Enter sind keine Zeichen und können damit nicht Teil eines Strings sein.

Ich rate mal, das es hier um eine Art "Tastendruck emulieren" geht. Meist bringen die Routinen mit denen das gemacht wird, eine eigene Syntax mit, um solche speziellen Tastendrücke zum senden.

Astat 18. Feb 2010 19:30

Re: Alt Return drücken
 
Hallo Dumpfbacke,

Delphi-Quellcode:
 Wort1 + #18#13 + Wort2;
lg. Astat

Blackheart 18. Feb 2010 19:33

Re: Alt Return drücken
 
Zitat:

Zitat von chaosben
Alt+Enter sind keine Zeichen und können damit nicht Teil es Strings sein.

Ich rate mal, das es hier um eine Art "Tastendruck emulieren" geht. Meist bringen die Routinen mit denen das gemacht wird, eine eigene Syntax mit, um solche speziellen Tastendrücke zum senden.

Ist nur geraten, ich konnte die zwei Sätze auch nicht lesen. :wink:

SirThornberry 18. Feb 2010 19:42

Re: Alt Return drücken
 
Hier werden Tastencodes mit Zeichencodes vermischt. Das kann nur schief gehen.

Astat 18. Feb 2010 22:56

Re: Alt Return drücken
 
Zitat:

Zitat von SirThornberry
Hier werden Tastencodes mit Zeichencodes vermischt. Das kann nur schief gehen.

Naja, oder er meint sowas..

Delphi-Quellcode:

procedure SendText(ptrData: Pointer);
var
  ptrByte: PByte;
  bShift: Boolean;
begin
  ptrByte := ptrData;
  while ptrByte^ <> 0 do begin
    bShift := False;
    if ((ptrByte^ > $40) AND (ptrByte^ < $5B) ) then begin
      bShift := True;
      keybd_event(VK_SHIFT, 0, 0, 0);
    end;
    if ((ptrByte^ > $60) AND (ptrByte^ < $7B)) then begin
      keybd_event(ptrByte^ - $20, 0, 0, 0);
      keybd_event(ptrByte^ - $20, 0, KEYEVENTF_KEYUP, 0);
    end else begin
      keybd_event(ptrByte^, 0, 0, 0);
      keybd_event(ptrByte^, 0, KEYEVENTF_KEYUP, 0);
    end;
    if bShift then
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
    inc(ptrByte);
  end;
end;

begin
  SendText(PChar(#18#13));
end.

lg. Astat

Dumpfbacke 19. Feb 2010 19:02

Re: Alt Return drücken
 
Zitat:

Zitat von chaosben
Alt+Enter sind keine Zeichen und können damit nicht Teil eines Strings sein.

Ich rate mal, das es hier um eine Art "Tastendruck emulieren" geht. Meist bringen die Routinen mit denen das gemacht wird, eine eigene Syntax mit, um solche speziellen Tastendrücke zum senden.

Ich beschreibe es noch einmal anders. Wenn man bei Excel ALT Return druckt erhält man in einer Zelle eine zweite Zeile. Ich habe eine Komponente mit der ich Excel Dateien erzeuge kann. (Ohne das Excel installiert ist). Nun möchte ich mittels dieses Komponente in einer Zelle zwei Zeilen erzeugen. Aus diesem Grund möchte ich einen Text eintragen dann ALT Return übertragen und dann weiteren Text.

Dumpfbacke

Sir Rufo 19. Feb 2010 21:48

Re: Alt Return drücken
 
Yes, Kollege ...

Aber ALT-ENTER ist doch nur ein "Hotkey" der Excel dazu veranlassen soll, in der Zelle eine Zeilenumbruch einzufügen.
Denn bei ENTER wechselt der in die nächste Zelle.

Das meinen wir damit ... TastenCodes mit Zeichencodes vertauscht

Also, wenn du Excel fernsteuern willst, dann musst du die TastenCodes für ALT-ENTER senden
Wenn du in einer Zelle einen mehrzeiligen Text haben willst, dann würde ich es zunächst mit #13#10 versuchen
Delphi-Quellcode:
Zelle[ x, y ] := 'Das hier'#13#10'ist ein Test';
Noch einfacher wäre es ja, einen bestehenden Eintrag (mit 2 Zeilen) auszulesen und dann die Zeichencodes zu ermitteln, die da als Zeilentrenner fungieren.

PS: hat eigentlich schon mal jemand gefragt, wie die Zeichencodes für STRG-F sind, weil damit könnte man in einer normalen Textdatei ja Fettdruck machen :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 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