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/)
-   -   Form des blnkenden Textcursor bei TEdit ändern (https://www.delphipraxis.net/178963-form-des-blnkenden-textcursor-bei-tedit-aendern.html)

Willie1 5. Feb 2014 17:06

Form des blnkenden Textcursor bei TEdit ändern
 
Hallo Leute,
bei dem Überweisungscomputer der Postbank wurde bei der Eingabe ein blinkendes Kästchen als Cursor benutzt, was sehr gut zu sehen war. (Seit der Umstellung auf SEPA ist es der schmale blinkende Strich(Standart), was für mich ungünstig ist).
Nach Aussage der Postbank laufen die ÜW-Rechner mit Win XP!

Wie kann ich ein blinkendes Kästchen als Text-Cursor bei TEdit in eine eigene Eingabemaske einbauen. Property Cursor ändert ja nur den Mauszeiger, wenn er über dem Eingabefeld steht.


Ich um Nachsicht, ich sehe schlecht und bin daher schlecht bei der Rescheche. Danke.

MfG
Willie

turboPASCAL 5. Feb 2014 17:22

AW: Form des blnkenden Textcursor bei TEdit ändern
 
Das könnte dir helfen:
http://www.delphipraxis.net/5580-tex...r-aendern.html

Willie1 5. Feb 2014 18:37

AW: Form des blnkenden Textcursor bei TEdit ändern
 
Hallo Danke TP!
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
  if CreateCaret(Edit1.Handle,0,10,10) <> NULL then beep;
  ShowCaret(Edit1.Handle);
end;
Dieser Code wird aktzeptiert aber das Caret ändert sich nicht. Wo muss der Code stehen, ich habe es auch mit OnEnter versucht.
(Es beept - Bei Return <> NULL ist der Aufruf erfolgreich Delphi-Hilfe)

Gruß Willie.

DeddyH 6. Feb 2014 07:30

AW: Form des blnkenden Textcursor bei TEdit ändern
 
CreateCaret:
Zitat:

The system provides one caret per queue. A window should create a caret only when it has the keyboard focus or is active. The window should destroy the caret before losing the keyboard focus or becoming inactive.
Außerdem: was soll der Vergleich mit NULL? Das ist eine BOOL-Funktion, da genügt doch ein
Delphi-Quellcode:
if CreateCaret(...) then...

Willie1 7. Feb 2014 10:30

AW: Form des blnkenden Textcursor bei TEdit ändern
 
Hallo DeddyH,
mit CreateCaret in OnKeyDown klappt es. Es ist aber nicht genau, was ich wollte. Das vergrüßerte Caret sollte das focussierte Feld leichter erkennbar machen. das wird aber erst sichtbar, wenn ich eine Taste gedrückt habe. Ich werde das fokussierte Feld gelb einfärben. (OnEnter und OnExit).

Danke und Gruß
Willie.

turboPASCAL 7. Feb 2014 15:38

AW: Form des blnkenden Textcursor bei TEdit ändern
 
Versuch es mal so, möglicherweise ist das was du suchst.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  oldMemoProc: Pointer;

function NewEditWndProc(Wnd: hWnd; wMsg: DWORD; ParamW: WParam;
  ParamL: LParam): LongInt; stdcall;
var
  edRect: TRect;
begin
  NewEditWndProc := CallWindowProc(oldMemoProc, Wnd, wMsg, ParamW, ParamL);
  Case wMsg of
    WM_SETFOCUS:
      begin
        GetClientRect(Wnd, edRect);
        CreateCaret(Wnd, 0, 8, edRect.Bottom - 2);
        ShowCaret(Wnd);
      end;
    WM_KILLFOCUS:
      begin
        HideCaret(Wnd);
        DestroyCaret;
      end;
  end;
end;
// ---------------------------------------------------------------------------

procedure TForm1.FormCreate(Sender: TObject);
begin
  oldMemoProc := Pointer(SetWindowLong(Edit1.Handle, GWL_WNDPROC, LongInt(@NewEditWndProc)));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  //
end;
Solltest du merere Edits so modifiz. wollen würde ich eine neue Klasse ableiten.

Willie1 7. Feb 2014 18:45

AW: Form des blnkenden Textcursor bei TEdit ändern
 
Hallo TP vielen Dank für deine Mühe.
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if CreateCaret(TEdit(Sender).Handle,1,5,12) then ShowCaret(TEdit(Sender).Handle);
end;
Nur wenn ich diesen Code einfüge wird nach dem Drücken einer beliebigen Taste das neue Caret sichtbar.
Ich habe deinen Code mit Copy and Paste eingefügt.

Gruß Willie

turboPASCAL 8. Feb 2014 17:04

AW: Form des blnkenden Textcursor bei TEdit ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Warscheinlich hast du beim ausprobieren des obigen Codes vergessen im OI Create und Destroy einzustellen.

Noch mal ein Versuch mit einer anderen Herangehensweise.
Hier wird einfach die TEdit-Classe durch überschreiben erweitert.

Willie1 8. Feb 2014 18:08

AW: Form des blnkenden Textcursor bei TEdit ändern
 
Hallo TP,
RESPEKT: beide Rezepze klappen gut!!! Ich hatte gestern Abend etwas übersehen. Das ist genau, was ich wollte. Es ermöglicht es einem sehbehinderten Anwender, Daten ein zu geben.
Deine Rezepte zeigen, wie einfallslos die Programmierer der Bank-Software sind. Obwohl der Bildschirm groß genug ist, ist die Schrift winzig, weder wird das fokussierte Feld eingefärbt noch das Caret vergrüßert. Auch für User mit gesunden Augen ist das hilfreich. Die Datumseingabe ist aus dem letzten Jahrhundert.
Der Rechner bei der Post wurde mal hochgefahren, da las ich Windows XP. Die Chefin der Postfiliale hat immerhin zugesagt, mein Anliegen weiter zu geben.
Auf meinem Coputer zu Hause komme ich mit einer Lupensoftware ganz gut zurecht. Aber Internet-Banking mache ich nicht.

Gruß Willie.

hathor 8. Feb 2014 19:18

AW: Form des blnkenden Textcursor bei TEdit ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Willie1 (Beitrag 1246849)
Hallo Leute,
bei dem Überweisungscomputer der Postbank wurde bei der Eingabe ein blinkendes Kästchen als Cursor benutzt, was sehr gut zu sehen war...

Ich um Nachsicht, ich sehe schlecht und bin daher schlecht bei der Rescheche. Danke.

MfG
Willie

Mal eine Frage zur Aufklärung:
Ist das Dein Arbeitsplatz (Dann setze Dich mit dem Behindertenbeauftragten in Verbindung) oder was?

Wenn Du zuhause über einen Internet-Browser Überweisungen tätigst,
warum änderst Du dann nicht WINDOWS für Sehbehinderte (Center für erleichterte Bedienung) oder vergrösserst das Browser-Bild (z.B. STRG + bei FIREFOX).

Für eigene DELPHI-Programme:

Delphi-Quellcode:
type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    SpinEdit1: TSpinEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SpinEdit1Change(Sender: TObject);
  private
    { Private-Deklarationen }
        OrignalValue : Integer;
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
  NewValue : Integer;
begin
  Screen.Cursor := crHourGlass;
  NewValue := SpinEdit1.Value;
  SystemParametersInfo(SPI_SETCARETWIDTH,
                       0,
                       Pointer(NewValue),
                       SPIF_SENDCHANGE);

  Screen.Cursor := crDefault;
  Edit1.SetFocus;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SystemParametersInfo(SPI_SETCARETWIDTH,
                       0,
                       Pointer(2), // Breite des Carets
                       SPIF_SENDCHANGE);
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
SpinEdit1.MaxValue:=20;
SpinEdit1.Value:=10;
  SystemParametersInfo(SPI_GETCARETWIDTH,
                       0,
                       @OrignalValue,
                       0);
end;

procedure TForm2.SpinEdit1Change(Sender: TObject);
begin
  Button1.Click;
end;

end.


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