Text markieren in TEdit
Text markieren in TEdit
Weiss nicht ob es ein Bug ist, aber ich vermute es mal.
Version: 0.9.26
Linux:
Wenn ich in einem TEdit die Farbe ändere, zb beo onEnter auf clYellow setze. Dann kann ich nicht sehen ob irgendwelcher Text markiert ist.
Ist Color auf clWindow, dann wird markierter Text grau hinterlegt.
Unter Windows ist der effekt nicht, dort sieht man auch mit clYellow den markierten Text grau.
edit:
Vermute mal es ist der Bug:
http://bugs.freepascal.org/view.php?id=8684" onclick="window.open(this.href);return false;
Dort steht zwar: 2008-04-15 19:22 Felipe Monteiro de Carvalho Fixed in Version => 0.9.25 (SVN)
aber in 0.9.26 ist er wohl doch wieder da, oder ist der nur in der SVN gefixed.
Version: 0.9.26
Linux:
Wenn ich in einem TEdit die Farbe ändere, zb beo onEnter auf clYellow setze. Dann kann ich nicht sehen ob irgendwelcher Text markiert ist.
Ist Color auf clWindow, dann wird markierter Text grau hinterlegt.
Unter Windows ist der effekt nicht, dort sieht man auch mit clYellow den markierten Text grau.
edit:
Vermute mal es ist der Bug:
http://bugs.freepascal.org/view.php?id=8684" onclick="window.open(this.href);return false;
Dort steht zwar: 2008-04-15 19:22 Felipe Monteiro de Carvalho Fixed in Version => 0.9.25 (SVN)
aber in 0.9.26 ist er wohl doch wieder da, oder ist der nur in der SVN gefixed.
Zuletzt geändert von wolfdec am Fr 13. Feb 2009, 11:15, insgesamt 1-mal geändert.
Re: Text markieren in TEdit
Kann schon sein, dass das ein Bug ist.
Aber mein Tipp: Ändere die Farbe nicht und lass die Widgetsets und Themes ihre Arbeit tun. Die Augen deiner User werden es dir danken
Aber mein Tipp: Ändere die Farbe nicht und lass die Widgetsets und Themes ihre Arbeit tun. Die Augen deiner User werden es dir danken

Re: Text markieren in TEdit
Mein Ziel war es für eine Eingabemaske, das aktuelle EDIT-Feld durch einen gelben Hintergrund farblich hervor zu heben. Sowas mögen manche Büromenschen.theo hat geschrieben:Kann schon sein, dass das ein Bug ist.
Aber mein Tipp: Ändere die Farbe nicht und lass die Widgetsets und Themes ihre Arbeit tun. Die Augen deiner User werden es dir danken
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Text markieren in TEdit
Naja, bin da ganz Theos meinung 2 mögen das und 20 bekommen augenkrebs.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Re: Text markieren in TEdit
Immerhin kenne ich einige nicht ganz kleine professionelle Anwendungen die genau dies machen. Die Farbe sollte dann etwas dezenter sein.
Die Praxis ist zb.:
Man schreibt Daten von einem Dokument in eine Eingabemaske.
Blick auf Monitor, sofort ist der Blick auf dem Feld. Tab zum nächsten Feld.
Blick Zettel, Blick Monitor und wieder sind die Augen direkt auf dem aktiven Feld gerichtet.
Bei einheitsgrau-weiss.
Blick Zettel, Blick Monitor, aktives Feld suchen.
Blick Zettel, Blick Monitor, aktives Fedl suchen.
Sicher nur eine Sache von einer Sekunde, aber trotzdem eine Arbeitserleichterung.
Man kann es natürlich auch abschaltbar machen.
-> Bug:
noch mal getestet mit GTK.
dort kann ich den Hintergrund ändern, und die Farbe für den markierten Text bleibt erhalten.
Dafür gibt es dort etwas anderes lustiges. Markiere ich einen Text, gehe in ein anderes Edit, bleibt im ersten noch die Markierung (Blau), markiere ich im zweiten den Text, geht die Markierung im ersten weg. Nur wird das Blaue nicht wieder gelb, sondern grau.
Unter GTK2 geht die Farbe für den markierten Text verloren.
Die Praxis ist zb.:
Man schreibt Daten von einem Dokument in eine Eingabemaske.
Blick auf Monitor, sofort ist der Blick auf dem Feld. Tab zum nächsten Feld.
Blick Zettel, Blick Monitor und wieder sind die Augen direkt auf dem aktiven Feld gerichtet.
Bei einheitsgrau-weiss.
Blick Zettel, Blick Monitor, aktives Feld suchen.
Blick Zettel, Blick Monitor, aktives Fedl suchen.
Sicher nur eine Sache von einer Sekunde, aber trotzdem eine Arbeitserleichterung.
Man kann es natürlich auch abschaltbar machen.
-> Bug:
noch mal getestet mit GTK.
dort kann ich den Hintergrund ändern, und die Farbe für den markierten Text bleibt erhalten.
Dafür gibt es dort etwas anderes lustiges. Markiere ich einen Text, gehe in ein anderes Edit, bleibt im ersten noch die Markierung (Blau), markiere ich im zweiten den Text, geht die Markierung im ersten weg. Nur wird das Blaue nicht wieder gelb, sondern grau.
Unter GTK2 geht die Farbe für den markierten Text verloren.
Re: Text markieren in TEdit
Lass es einfach bleiben
Wenn du darauf bestehst, lies zuerst hier ("Overview")
http://ometer.com/gtk-colors.html" onclick="window.open(this.href);return false;
Wenn du's implementieren willst, vielleicht hier anfangen:
http://library.gnome.org/devel/gtk/stab ... -modify-bg" onclick="window.open(this.href);return false;
Vielleicht kann man es auch anders lösen. Schieb z.B. ein Timage oder TShape mit einem Pfeil vor das aktive TEdit.

Wenn du darauf bestehst, lies zuerst hier ("Overview")
http://ometer.com/gtk-colors.html" onclick="window.open(this.href);return false;
Wenn du's implementieren willst, vielleicht hier anfangen:
http://library.gnome.org/devel/gtk/stab ... -modify-bg" onclick="window.open(this.href);return false;
Vielleicht kann man es auch anders lösen. Schieb z.B. ein Timage oder TShape mit einem Pfeil vor das aktive TEdit.
Re: Text markieren in TEdit
Danke für die Links. Hab es jetzt fast so, wie ich es will.theo hat geschrieben:Lass es einfach bleiben![]()
Wenn du darauf bestehst, lies zuerst hier ("Overview")
http://ometer.com/gtk-colors.html" onclick="window.open(this.href);return false;
Wenn du's implementieren willst, vielleicht hier anfangen:
http://library.gnome.org/devel/gtk/stab ... -modify-bg" onclick="window.open(this.href);return false;
Vielleicht kann man es auch anders lösen. Schieb z.B. ein Timage oder TShape mit einem Pfeil vor das aktive TEdit.
Bleiben lassen ist leider keine Lösung. Auch wenn es kein schwerwiegender Bug ist. Verwunderlich ist nur, dass er in der .25 geschlossen wurde in der .26 aber noch vorhanden.
Re: Text markieren in TEdit
Ich glaube der Bug der da geschlossen wurde ist nur der von der ursprünglichen Beschreibung.wolfdec hat geschrieben: Verwunderlich ist nur, dass er in der .25 geschlossen wurde in der .26 aber noch vorhanden.
Das mit der Selection war ja nur ein Kommentar.
http://bugs.freepascal.org/view.php?id=8684" onclick="window.open(this.href);return false;
-
- Lazarusforum e. V.
- Beiträge: 240
- Registriert: Di 5. Feb 2008, 15:32
- OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
Re: Text markieren in TEdit
Wenn du es jetzt hast, könntest du vielleicht dein Lösung hier posten?
Eberhard
Eberhard
Re: Text markieren in TEdit
bei onEnter bzw. onEditDone()
die unit, sicher noch etwas überarbeitbar.
in der Form hab ich: procedure TForm1.Edit1Enter(Sender: TObject);
geändert in: procedure TForm1.Edit1Enter(Sender: TEdit);
die unit, sicher noch etwas überarbeitbar.
Code: Alles auswählen
unit wdui;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, StdCtrls, Graphics
{$IFDEF LINUX},gtk2,gdk2,GTKProc{$ENDIF}
;
procedure onEnterColor(obj:TEdit);
procedure onLeaveColor(obj:TEdit);
{$IFDEF LINUX}
function myAllocGDKColor(const AColor: LongInt): TGDKColor;
procedure set_TextViewColor( aTextView : TEdit; aColor : Tcolor );
{$ENDIF}
implementation
procedure onEnterColor(obj:TEdit);
begin
{$IFNDEF LINUX}
obj.Color:=clYellow; // Bug with GTK2
{$ENDIF}
{$IFDEF LINUX}
set_TextViewColor(obj,clYellow);
{$ENDIF}
end;
procedure onLeaveColor(obj:TEdit);
begin
{$IFNDEF LINUX}
obj.Color:=clWindow; // Bug with GTK2
{$ENDIF}
{$IFDEF LINUX}
obj.SelLength:=0;
set_TextViewColor(obj,clText );
{$ENDIF}
end;
{$IFDEF LINUX}
// von http://bugs.freepascal.org/view.php?id=8684" onclick="window.open(this.href);return false;
function myAllocGDKColor(const AColor: LongInt): TGDKColor;
begin
with Result do
begin
Red := ((AColor shl 8) and $00FF00) or ((AColor ) and $0000FF);
Green := ((AColor ) and $00FF00) or ((AColor shr 8 ) and $0000FF);
Blue := ((AColor shr 8) and $00FF00) or ((AColor shr 16) and $0000FF);
end;
gdk_colormap_alloc_color(gdk_colormap_get_system, @Result, False, True);
end;
procedure set_TextViewColor( aTextView : TEdit; aColor : Tcolor );
var
lTextView : PGtkTextView;
lGdkColor : TGDKColor;
begin
lTextView := GTK_TEXT_VIEW( GetWidgetInfo( PGtkWidget( TEdit( aTextView ).Handle ), false )^.CoreWidget );
lGdkColor := myAllocGDKColor( aColor );
gtk_widget_modify_base ( pGtkWidget( lTextView ), GTK_STATE_NORMAL, @lGdkColor);
end;
{$ENDIF}
end.
geändert in: procedure TForm1.Edit1Enter(Sender: TEdit);
Code: Alles auswählen
procedure TForm1.Edit1Enter(Sender: TEdit);
begin
onEnterColor(Sender);
end;
Re: Text markieren in TEdit
Bravo wolfdec! Endlich mal einer der mit ein paar Hinweisen was anfangen kann.
Da ist der Schritt zum Beitrag zur Verbesserung der LCL nicht mehr weit.
Da ist der Schritt zum Beitrag zur Verbesserung der LCL nicht mehr weit.
