![]() |
Nur große Buchstaben (+Zahlen) in DBEdit feld? (...)
also hab folgendes problem.
ich benutze ein SendKey code mit dem ich alles von DBEdit in eine (jetzt als bsp) .txt datei einfuegen will. logisch ihc hab des im editor grad offen und des soll dann den text kriegen. hier hab ich das problem das beim code keine kleinen buchstaben erkannt werden bzw diese durch zaheln oder sonstiges ersetzt werden. um kleine buchstaben zu schreiben muss ich einen großen buchstaben vorgeben. z.B. [Im DBEdit feld] HALLO [Durch SendKeys im Editor] hallo um die dann wieder groß zu schreiben geb ich da halt capslock oda sonst was ein. Allerdings kann man ja im DBEdit feld große wie auch kleine buchstaben eingeben, und wenn jemand kleine buchstaben eingibt werden die dadurch im editor garnicht erst hingeschrieben oda als zahlen dargestellt. also hab ich eine frage ob ich jetzt das DBEdit feld so einstellen das wenn man einen buchstaben eintippt das er automatisch groß ist und das man ganz normal zahlen eingeben kann (also damit aus 1 nicht ! wird) oda ob mir jemand helfen kann den Sendkey code umzuschreiben bzw. einen anderen geben. Was ich benutzte: ButtonClick:
Delphi-Quellcode:
SendKeys.pas
procedure TForm1.Button2Click(Sender: TObject);
begin Application.ProcessMessages; Showmessage('Nachricht'); ShellExecute(0,'open',PChar('notepad.exe'),nil,nil,SW_SHOWNORMAL); // oder winexec('notepad.exe',SW_NORMAL); Sleep(1000); SendKeys.SendKeysToTitle('Unbenannt - Editor',DBEdit1.Text); end;
Delphi-Quellcode:
unit SendKeys;
interface uses Windows, SysUtils; const SK_BKSP = #8; SK_TAB = #9; SK_ENTER = #13; SK_ESC = #27; SK_ADD = #107; SK_SUB = #109; SK_F1 = #228; SK_F2 = #229; SK_F3 = #230; SK_F4 = #231; SK_F5 = #232; SK_F6 = #233; SK_F7 = #234; SK_F8 = #235; SK_F9 = #236; SK_F10 = #237; SK_F11 = #238; SK_F12 = #239; SK_HOME = #240; SK_END = #241; SK_UP = #242; SK_DOWN = #243; SK_LEFT = #244; SK_RIGHT = #245; SK_PGUP = #246; SK_PGDN = #247; SK_INS = #248; SK_DEL = #249; SK_SHIFT_DN = #250; SK_SHIFT_UP = #251; SK_CTRL_DN = #252; SK_CTRL_UP = #253; SK_ALT_DN = #254; SK_ALT_UP = #255; procedure SendKeyString(Text: String); procedure SendKeysToTitle(WindowTitle: String; Text: String); procedure SendKeysToHandle(WindowHandle: hWnd; Text: String); procedure MakeWindowActive(wHandle: hWnd); function GetHandleFromWindowTitle(TitleText: String): hWnd; implementation procedure SendKeyString(Text: String); var i: Integer; Shift: Boolean; vk, ScanCode: Word; ch: Char; c, s: Byte; const vk_keys: Array[0..9] of Byte = (VK_HOME, VK_END, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_PRIOR, VK_NEXT, VK_INSERT, VK_DELETE); vk_shft: Array[0..2] of Byte = (VK_SHIFT, VK_CONTROL, VK_MENU); flags: Array[False..True] of Integer = (KEYEVENTF_KEYUP, 0); begin Shift := False; for i := 1 to Length(Text) do begin ch := Text[i]; if ch >= #250 then begin s := Ord(ch) - 250; Shift := not Odd(s); c := vk_shft[s shr 1]; ScanCode := MapVirtualKey(c,0); Keybd_Event(c, Scancode, Flags[shift], 0); end else begin vk := 0; if ch >= #240 then c := vk_keys[Ord(ch) - 240] else if ch >= #228 then {228 (F1) => $70 (vk_F1)} c := Ord(ch) - 116 else if ch < #110 then c := Ord(ch) else begin vk := VkKeyScan(ch); c := LoByte(vk); end; ScanCode := MapVirtualKey(c,0); if not Shift and (Hi(vk) > 0) then { $2A = scancode of VK_SHIFT } Keybd_Event(VK_SHIFT, $2A, 0, 0); Keybd_Event(c,scancode, 0, 0); Keybd_Event(c,scancode, KEYEVENTF_KEYUP, 0); if not Shift and (Hi(vk) > 0) then Keybd_Event(VK_SHIFT, $2A, KEYEVENTF_KEYUP, 0); end; end; end; procedure MakeWindowActive(wHandle: hWnd); begin if IsIconic(wHandle) then ShowWindow(wHandle, SW_RESTORE) else BringWindowToTop(wHandle); end; function GetHandleFromWindowTitle(TitleText: String): hWnd; var StrBuf: Array[0..$FF] of Char; begin Result := FindWindow(PChar(0), StrPCopy(StrBuf, TitleText)); end; procedure SendKeysToTitle(WindowTitle: String; Text: String); var Window: hWnd; begin Window := GetHandleFromWindowTitle(WindowTitle); MakeWindowActive(Window); SendKeyString(Text); end; procedure SendKeysToHandle(WindowHandle: hWnd; Text: String); begin MakeWindowActive(WindowHandle); SendKeyString(Text); end; end. |
Re: Nur große Buchstaben (+Zahlen) in DBEdit feld? (...)
Versuch es mal mit UpperCase()
[edit=Matze]Beitrag aufgrund eines Cache-Fehlers neu abgesendet. MfG, Matze[/edit] |
Re: Nur große Buchstaben (+Zahlen) in DBEdit feld? (...)
>.< man das ich ja schon peinlich
hab jetzt das hier zum uppercase gefunden
Delphi-Quellcode:
allerdings hab ich keine ahnung wo bzw wie ich das einfügen soll.
function UpperCase ( const MixedString : string ) : string;
:? EDIT: ah schon ok glaub ich habs hinbekommen. Uppercase(DBEdit1.Text); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz