AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Nur große Buchstaben (+Zahlen) in DBEdit feld? (...)
Thema durchsuchen
Ansicht
Themen-Optionen

Nur große Buchstaben (+Zahlen) in DBEdit feld? (...)

Ein Thema von xShadowBoZz · begonnen am 7. Apr 2008 · letzter Beitrag vom 7. Apr 2008
Antwort Antwort
Benutzerbild von xShadowBoZz
xShadowBoZz

Registriert seit: 19. Jan 2008
Ort: Deutschland ~.~
80 Beiträge
 
Delphi 7 Enterprise
 
#1

Nur große Buchstaben (+Zahlen) in DBEdit feld? (...)

  Alt 7. Apr 2008, 19:49
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:
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;
SendKeys.pas
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.
Andreas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Nur große Buchstaben (+Zahlen) in DBEdit feld? (...)

  Alt 7. Apr 2008, 19:50
Versuch es mal mit UpperCase()


[edit=Matze]Beitrag aufgrund eines Cache-Fehlers neu abgesendet. MfG, Matze[/edit]
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von xShadowBoZz
xShadowBoZz

Registriert seit: 19. Jan 2008
Ort: Deutschland ~.~
80 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Nur große Buchstaben (+Zahlen) in DBEdit feld? (...)

  Alt 7. Apr 2008, 20:07
>.< man das ich ja schon peinlich
hab jetzt das hier zum uppercase gefunden
function UpperCase ( const MixedString : string ) : string; allerdings hab ich keine ahnung wo bzw wie ich das einfügen soll.


EDIT:
ah schon ok glaub ich habs hinbekommen.
Uppercase(DBEdit1.Text);
Andreas
  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 11:30 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