convert lcl messages to new interface using methods: LM_{G,S}ETSELSTART, LM_{G,S}ETSELLEN, LM_{G,S}ETLIMITTEXT

git-svn-id: trunk@5930 -
This commit is contained in:
micha 2004-09-07 09:44:46 +00:00
parent 135948348e
commit 12e184b13e
14 changed files with 508 additions and 271 deletions

View File

@ -33,7 +33,7 @@ begin
inherited CreateWnd; inherited CreateWnd;
// get the interface based item list // get the interface based item list
NewStrings:= TStrings(Pointer(CNSendMessage(LM_GETITEMS, Self, nil))); NewStrings:= TWSCustomComboBoxClass(WidgetSetClass).GetItems(Self);
// then delete internal list // then delete internal list
if (FItems<>NewStrings) and (FItems<>nil) then begin if (FItems<>NewStrings) and (FItems<>nil) then begin
NewStrings.Assign(FItems); NewStrings.Assign(FItems);
@ -44,7 +44,7 @@ begin
ParentColor := false; ParentColor := false;
if FItemIndex <> -1 then if FItemIndex <> -1 then
CNSendMessage(LM_SETITEMINDEX, Self, Pointer(FItemIndex)); TWSCustomComboBoxClass(WidgetSetClass).SetItemIndex(Self, FItemIndex);
CNSendMessage(LM_SETPROPERTIES, Self, nil); CNSendMessage(LM_SETPROPERTIES, Self, nil);
end; end;
@ -141,7 +141,7 @@ begin
if Val<>MaxLength then begin if Val<>MaxLength then begin
fMaxlength:=Val; fMaxlength:=Val;
if HandleAllocated then if HandleAllocated then
CNSendMessage(LM_SETLIMITTEXT, Self, @Val); TWSCustomComboBoxClass(WidgetSetClass).SetMaxLength(Self, Val);
end; end;
end; end;
@ -155,7 +155,7 @@ end;
function TCustomComboBox.GetMaxLength : integer; function TCustomComboBox.GetMaxLength : integer;
begin begin
if HandleAllocated then if HandleAllocated then
fMaxLength := CNSendMessage(LM_GETLIMITTEXT, Self, nil); fMaxLength := TWSCustomComboBoxClass(WidgetSetClass).GetMaxLength(Self);
Result:=fMaxLength; Result:=fMaxLength;
end; end;
@ -280,7 +280,7 @@ end;
function TCustomComboBox.GetSelStart : integer; function TCustomComboBox.GetSelStart : integer;
begin begin
if HandleAllocated then if HandleAllocated then
fSelStart:=CNSendMessage(LM_GETSELSTART, Self, nil); fSelStart:=TWSCustomComboBoxClass(WidgetSetClass).GetSelStart(Self);
Result:=fSelStart; Result:=fSelStart;
end; end;
@ -295,7 +295,7 @@ procedure TCustomComboBox.SetSelStart(Val : integer);
begin begin
fSelStart:=Val; fSelStart:=Val;
if HandleAllocated then if HandleAllocated then
CNSendMessage(LM_SETSELSTART, Self, Pointer(Val)); TWSCustomComboBoxClass(WidgetSetClass).SetSelStart(Self, Val);
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
@ -308,7 +308,7 @@ end;
function TCustomComboBox.GetSelLength : integer; function TCustomComboBox.GetSelLength : integer;
begin begin
if HandleAllocated then if HandleAllocated then
fSelLength := CNSendMessage(LM_GETSELLEN, Self, nil); fSelLength := TWSCustomComboBoxClass(WidgetSetClass).GetSelLength(Self);
Result:=fSelLength; Result:=fSelLength;
end; end;
@ -323,7 +323,7 @@ procedure TCustomComboBox.SetSelLength(Val : integer);
begin begin
fSelLength:=Val; fSelLength:=Val;
if HandleAllocated then if HandleAllocated then
CNSendMessage(LM_SETSELLEN, Self, Pointer(Val)); TWSCustomComboBoxClass(WidgetSetClass).SetSelLength(Self, Val);
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
@ -688,7 +688,7 @@ end;
function TCustomComboBox.GetItemIndex : integer; function TCustomComboBox.GetItemIndex : integer;
begin begin
if HandleAllocated then if HandleAllocated then
FItemIndex:= CNSendMessage(LM_GETITEMINDEX, Self, nil); FItemIndex:= TWSCustomComboBoxClass(WidgetSetClass).GetItemIndex(Self);
Result:=FItemIndex; Result:=FItemIndex;
end; end;
@ -706,7 +706,7 @@ begin
//if (FItemIndex>=0) and (not (csLoading in ComponentState)) then //if (FItemIndex>=0) and (not (csLoading in ComponentState)) then
// Text:=FItems[FItemIndex]; // Text:=FItems[FItemIndex];
if HandleAllocated then if HandleAllocated then
CNSendMessage(LM_SETITEMINDEX, Self, Pointer(FItemIndex)); TWSCustomComboBoxClass(WidgetSetClass).SetItemIndex(Self, FItemIndex);
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
@ -783,22 +783,18 @@ end;
procedure TCustomComboBox.UpdateSorted; procedure TCustomComboBox.UpdateSorted;
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
procedure TCustomComboBox.UpdateSorted; procedure TCustomComboBox.UpdateSorted;
var
AMessage : TLMSort;
begin begin
if not HandleAllocated then exit; if not HandleAllocated then exit;
with AMessage do begin TWSCustomComboBoxClass(WidgetSetClass).Sort(Self, Items, FSorted);
Msg:= LM_SORT;
List:= Items;
IsSorted:= FSorted;
end;
CNSendMessage(LM_SORT, Self, @AMessage);
end; end;
// included by stdctrls.pp // included by stdctrls.pp
{ {
$Log$ $Log$
Revision 1.45 2004/09/07 09:44:46 micha
convert lcl messages to new interface using methods: LM_{G,S}ETSELSTART, LM_{G,S}ETSELLEN, LM_{G,S}ETLIMITTEXT
Revision 1.44 2004/09/01 10:25:58 mattias Revision 1.44 2004/09/01 10:25:58 mattias
added some project flags to start getting rid of TProjectType added some project flags to start getting rid of TProjectType

View File

@ -108,7 +108,7 @@ end;
function TCustomEdit.GetSelStart : integer; function TCustomEdit.GetSelStart : integer;
begin begin
if HandleAllocated then if HandleAllocated then
FSelStart:= CNSendMessage(LM_GETSELSTART, Self, nil); FSelStart:= TWSCustomEditClass(WidgetSetClass).GetSelStart(Self);
Result:= FSelStart; Result:= FSelStart;
end; end;
@ -123,7 +123,7 @@ procedure TCustomEdit.SetSelStart(Val : integer);
begin begin
FSelStart:= Val; FSelStart:= Val;
if HandleAllocated then if HandleAllocated then
CNSendMessage(LM_SETSELSTART, Self, Pointer(Val)); TWSCustomEditClass(WidgetSetClass).SetSelStart(Self, Val);
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
@ -136,7 +136,7 @@ end;
function TCustomEdit.GetSelLength : integer; function TCustomEdit.GetSelLength : integer;
begin begin
if HandleAllocated then if HandleAllocated then
FSelLength := CNSendMessage(LM_GETSELLEN, Self, nil); FSelLength := TWSCustomEditClass(WidgetSetClass).GetSelLength(Self);
Result:= FSelLength; Result:= FSelLength;
end; end;
@ -151,7 +151,7 @@ procedure TCustomEdit.SetSelLength(Val : integer);
begin begin
FSelLength:= Val; FSelLength:= Val;
if HandleAllocated then if HandleAllocated then
CNSendMessage(LM_SETSELLEN, Self, Pointer(Val)); TWSCustomEditClass(WidgetSetClass).SetSelLength(Self, Val);
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
@ -380,6 +380,9 @@ end;
{ ============================================================================= { =============================================================================
$Log$ $Log$
Revision 1.32 2004/09/07 09:44:46 micha
convert lcl messages to new interface using methods: LM_{G,S}ETSELSTART, LM_{G,S}ETSELLEN, LM_{G,S}ETLIMITTEXT
Revision 1.31 2004/08/25 20:16:12 marc Revision 1.31 2004/08/25 20:16:12 marc
* fixed infinite for maxlength * fixed infinite for maxlength

View File

@ -64,14 +64,14 @@ end;
function TCustomSpinEdit.GetSelLength: integer; function TCustomSpinEdit.GetSelLength: integer;
begin begin
if HandleAllocated then if HandleAllocated then
FSelLength := CNSendMessage(LM_GETSELLEN, Self, nil); FSelLength := TWSCustomSpinEditClass(WidgetSetClass).GetSelLength(Self);
Result:= FSelLength; Result:= FSelLength;
end; end;
function TCustomSpinEdit.GetSelStart: integer; function TCustomSpinEdit.GetSelStart: integer;
begin begin
if HandleAllocated then if HandleAllocated then
FSelStart:= CNSendMessage(LM_GETSELSTART, Self, nil); FSelStart:= TWSCustomSpinEditClass(WidgetSetClass).GetSelStart(Self);
Result:= FSelStart; Result:= FSelStart;
end; end;
@ -109,14 +109,14 @@ procedure TCustomSpinEdit.SetSelLength(const AValue: integer);
begin begin
FSelLength:= AValue; FSelLength:= AValue;
if HandleAllocated then if HandleAllocated then
CNSendMessage(LM_SETSELLEN, Self, Pointer(FSelLength)); TWSCustomSpinEditClass(WidgetSetClass).SetSelLength(Self, FSelLength);
end; end;
procedure TCustomSpinEdit.SetSelStart(const AValue: integer); procedure TCustomSpinEdit.SetSelStart(const AValue: integer);
begin begin
FSelStart:= AValue; FSelStart:= AValue;
if HandleAllocated then if HandleAllocated then
CNSendMessage(LM_SETSELSTART, Self, Pointer(FSelStart)); TWSCustomSpinEditClass(WidgetSetClass).SetSelStart(Self, FSelStart);
end; end;
procedure TCustomSpinEdit.SetSelText(const AValue: String); procedure TCustomSpinEdit.SetSelText(const AValue: String);
@ -175,12 +175,9 @@ end;
{-----------------------------------------------------------------------------} {-----------------------------------------------------------------------------}
Function TCustomSpinEdit.GetValue: Single; Function TCustomSpinEdit.GetValue: Single;
Var
Temp : Single;
begin begin
if HandleAllocated and (not fValueNeedsUpdate) then begin if HandleAllocated and (not fValueNeedsUpdate) then begin
CNSendMessage(LM_GETVALUE,Self,@Temp); FValue := TWSCustomSpinEditClass(WidgetSetClass).GetValue(Self);
FValue := Temp;
end; end;
GetValue := fValue; GetValue := fValue;
end; end;

View File

@ -359,8 +359,8 @@ uses
// GtkWSMaskEdit, // GtkWSMaskEdit,
// GtkWSMenus, // GtkWSMenus,
// GtkWSPairSplitter, // GtkWSPairSplitter,
// GtkWSSpin, GtkWSSpin,
// GtkWSStdCtrls, GtkWSStdCtrls,
// GtkWSToolwin, // GtkWSToolwin,
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
Buttons, StdCtrls, PairSplitter, Math, Buttons, StdCtrls, PairSplitter, Math,
@ -462,6 +462,9 @@ end.
{ ============================================================================= { =============================================================================
$Log$ $Log$
Revision 1.189 2004/09/07 09:44:46 micha
convert lcl messages to new interface using methods: LM_{G,S}ETSELSTART, LM_{G,S}ETSELLEN, LM_{G,S}ETLIMITTEXT
Revision 1.188 2004/09/02 09:16:59 mattias Revision 1.188 2004/09/02 09:16:59 mattias
improved double byte char fonts for gtk1, started synedit UTF8 support improved double byte char fonts for gtk1, started synedit UTF8 support

View File

@ -3505,9 +3505,6 @@ begin
{$Else} {$Else}
begin begin
case TControl(Sender).fCompStyle of case TControl(Sender).fCompStyle of
csComboBox:
Result:=longint(gtk_object_get_data(PGtkObject(Handle),'LCLList'));
csCListBox: csCListBox:
begin begin
Widget:= GetWidgetInfo(Pointer(Handle), True)^.CoreWidget; Widget:= GetWidgetInfo(Pointer(Handle), True)^.CoreWidget;
@ -3541,9 +3538,6 @@ begin
LM_GETITEMINDEX : LM_GETITEMINDEX :
begin begin
case TControl(Sender).fCompStyle of case TControl(Sender).fCompStyle of
csComboBox:
Result:=GetComboBoxItemIndex(TComboBox(Sender));
{$IFdef GTK1} {$IFdef GTK1}
csListBox, csCheckListBox: csListBox, csCheckListBox:
begin begin
@ -3595,9 +3589,6 @@ begin
if Handle<>0 then begin if Handle<>0 then begin
case TControl(Sender).fCompStyle of case TControl(Sender).fCompStyle of
csComboBox:
SetComboBoxItemIndex(TComboBox(Sender),Integer(Data));
{$IFdef GTK1} {$IFdef GTK1}
csListBox, csCheckListBox: csListBox, csCheckListBox:
begin begin
@ -3629,106 +3620,6 @@ begin
end; end;
end; end;
LM_GETSELSTART :
begin
if (Sender is TControl) then begin
case TControl(Sender).fCompStyle of
csComboBox:
Widget:= PGtkWidget(PGtkCombo(Handle)^.entry);
{$IfDef GTK1}
csEdit, csMemo:
Widget:= GetWidgetInfo(Pointer(Handle), true)^.CoreWidget;
{$EndIf}
else
Widget:= nil;
end;
if Widget <> nil then begin
if PGtkOldEditable(Widget)^.selection_start_pos
< PGtkOldEditable(Widget)^.selection_end_pos
then
Result:= PGtkOldEditable(Widget)^.selection_start_pos
else
Result:= PGtkOldEditable(Widget)^.current_pos;// selection_end_pos
end else Result:= 0;
end;
end;
LM_GETSELLEN :
begin
if (Sender is TControl) then begin
case TControl(Sender).fCompStyle of
csComboBox:
with PGtkOldEditable(PGtkCombo(Handle)^.entry)^ do begin
Result:= Abs(integer(selection_end_pos)-integer(selection_start_pos));
end;
{$IfDef GTK1}
csEdit, csMemo:
begin
Widget:= GetWidgetInfo(Pointer(Handle), true)^.CoreWidget;
with PGtkOldEditable(Widget)^ do begin
Result:=Abs(integer(selection_end_pos)-integer(selection_start_pos));
end;
end;
{$EndIf}
end;
end;
end;
LM_GETLIMITTEXT :
begin
if (Sender is TControl)
and (TControl(Sender).fCompStyle = csComboBox) then
begin
Result:= PGtkEntry(PGtkCombo(Handle)^.entry)^.text_max_length;
end;
end;
LM_SETSELSTART:
begin
if (Sender is TControl) then begin
case TControl(Sender).fCompStyle of
csComboBox:
Widget:=PGtkCombo(Handle)^.entry;
{$IfDef GTK1}
csEdit, csMemo:
Widget:=GetWidgetInfo(Pointer(Handle), true)^.CoreWidget;
{$EndIf}
else
Widget:=nil;
end;
if Widget<>nil then begin
gtk_editable_set_position(PGtkOldEditable(Widget), Integer(Data));
end;
end;
end;
LM_SETSELLEN :
begin
if (Sender is TControl) then begin
case TControl(Sender).fCompStyle of
csComboBox:
Widget:=PGtkCombo(Handle)^.entry;
{$IfDef GTK1}
csEdit, csMemo:
Widget:=GetWidgetInfo(Pointer(Handle), true)^.CoreWidget;
{$EndIf}
else
Widget:=nil;
end;
if Widget<>nil then begin
gtk_editable_select_region(PGtkOldEditable(Widget),
gtk_editable_get_position(PGtkOldEditable(Widget)),
gtk_editable_get_position(PGtkOldEditable(Widget)) + Integer(Data));
end;
end;
end;
LM_GetLineCount : LM_GetLineCount :
begin begin
DebugLn('ToDo: LM_GetLineCount'); DebugLn('ToDo: LM_GetLineCount');
@ -3840,21 +3731,12 @@ begin
end; end;
{$EndIf} {$EndIf}
LM_SETLIMITTEXT :
begin
if (Sender is TControl) and (TControl(Sender).fCompStyle = csComboBox)
then gtk_entry_set_max_length(PGtkEntry(PGtkCombo(Handle)^.entry),
Integer(Data^));
end;
LM_SORT: LM_SORT:
begin begin
if (Sender is TControl) and assigned (data) then if (Sender is TControl) and assigned (data) then
begin begin
case TControl(Sender).fCompStyle of case TControl(Sender).fCompStyle of
csComboBox
{$Ifdef GTK1} {$Ifdef GTK1}
,
csListBox, csListBox,
csCheckListBox csCheckListBox
{$EndIf} : TGtkListStringList(TLMSort(Data^).List).Sorted:= {$EndIf} : TGtkListStringList(TLMSort(Data^).List).Sorted:=
@ -9273,6 +9155,9 @@ end;
{ ============================================================================= { =============================================================================
$Log$ $Log$
Revision 1.539 2004/09/07 09:44:46 micha
convert lcl messages to new interface using methods: LM_{G,S}ETSELSTART, LM_{G,S}ETSELLEN, LM_{G,S}ETLIMITTEXT
Revision 1.538 2004/09/06 22:24:52 mattias Revision 1.538 2004/09/06 22:24:52 mattias
started the carbon LCL interface started the carbon LCL interface

View File

@ -33,9 +33,14 @@ uses
// To get as little as posible circles, // To get as little as posible circles,
// uncomment only when needed for registration // uncomment only when needed for registration
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
// StdCtrls, StdCtrls,
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
WSStdCtrls, WSLCLClasses, GtkInt; {$IFDEF gtk2}
glib2, gdk2pixbuf, gdk2, gtk2, Pango,
{$ELSE}
glib, gdk, gtk, {$Ifndef NoGdkPixbufLib}gdkpixbuf,{$EndIf} GtkFontCache,
{$ENDIF}
WSStdCtrls, WSLCLClasses, GtkInt, Classes;
type type
@ -69,6 +74,18 @@ type
private private
protected protected
public public
class function GetSelStart(const ACustomComboBox: TCustomComboBox): integer; override;
class function GetSelLength(const ACustomComboBox: TCustomComboBox): integer; override;
class function GetItemIndex(const ACustomComboBox: TCustomComboBox): integer; override;
class function GetMaxLength(const ACustomComboBox: TCustomComboBox): integer; override;
class procedure SetSelStart(const ACustomComboBox: TCustomComboBox; NewStart: integer); override;
class procedure SetSelLength(const ACustomComboBox: TCustomComboBox; NewLength: integer); override;
class procedure SetItemIndex(const ACustomComboBox: TCustomComboBox; NewIndex: integer); override;
class procedure SetMaxLength(const ACustomComboBox: TCustomComboBox; NewLength: integer); override;
class function GetItems(const ACustomComboBox: TCustomComboBox): TStrings; override;
class procedure Sort(const ACustomComboBox: TCustomComboBox; AList: TStrings; IsSorted: boolean); override;
end; end;
{ TGtkWSComboBox } { TGtkWSComboBox }
@ -101,6 +118,11 @@ type
private private
protected protected
public public
class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override;
class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override;
class procedure SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); override;
class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
end; end;
{ TGtkWSCustomMemo } { TGtkWSCustomMemo }
@ -167,14 +189,6 @@ type
public public
end; end;
{ TGtkWSCheckBox }
TGtkWSCheckBox = class(TWSCheckBox)
private
protected
public
end;
{ TGtkWSToggleBox } { TGtkWSToggleBox }
TGtkWSToggleBox = class(TWSToggleBox) TGtkWSToggleBox = class(TWSToggleBox)
@ -210,6 +224,128 @@ type
implementation implementation
uses
Buttons, PairSplitter, Math,
GTKWinApiWindow, ComCtrls, CListBox, Calendar, Arrow, Spin, CommCtrl,
ExtCtrls, FileCtrl, LResources, gtkglobals, gtkproc;
{ helper routines }
function WidgetGetSelStart(const Widget: PGtkWidget): integer;
begin
if Widget <> nil then
begin
if PGtkOldEditable(Widget)^.selection_start_pos
< PGtkOldEditable(Widget)^.selection_end_pos
then
Result:= PGtkOldEditable(Widget)^.selection_start_pos
else
Result:= PGtkOldEditable(Widget)^.current_pos;// selection_end_pos
end else
Result:= 0;
end;
procedure WidgetSetSelLength(const Widget: PGtkWidget; NewLength: integer);
begin
if Widget<>nil then
begin
gtk_editable_select_region(PGtkOldEditable(Widget),
gtk_editable_get_position(PGtkOldEditable(Widget)),
gtk_editable_get_position(PGtkOldEditable(Widget)) + NewLength);
end;
end;
{ TGtkWSCustomComboBox }
function TGtkWSCustomComboBox.GetSelStart(const ACustomComboBox: TCustomComboBox): integer;
begin
Result := WidgetGetSelStart(PGtkWidget(PGtkCombo(ACustomComboBox.Handle)^.entry));
end;
function TGtkWSCustomComboBox.GetSelLength(const ACustomComboBox: TCustomComboBox): integer;
begin
with PGtkOldEditable(PGtkCombo(ACustomComboBox.Handle)^.entry)^ do begin
Result:= Abs(integer(selection_end_pos)-integer(selection_start_pos));
end;
end;
function TGtkWSCustomComboBox.GetItemIndex(const ACustomComboBox: TCustomComboBox): integer;
begin
// TODO: ugly typecast to tcombobox
Result:=GetComboBoxItemIndex(TComboBox(ACustomComboBox));
end;
function TGtkWSCustomComboBox.GetMaxLength(const ACustomComboBox: TCustomComboBox): integer;
begin
Result:= PGtkEntry(PGtkCombo(ACustomComboBox.Handle)^.entry)^.text_max_length;
end;
procedure TGtkWSCustomComboBox.SetSelStart(const ACustomComboBox: TCustomComboBox; NewStart: integer);
begin
gtk_editable_set_position(PGtkOldEditable(PGtkCombo(ACustomComboBox.Handle)^.entry), NewStart);
end;
procedure TGtkWSCustomComboBox.SetSelLength(const ACustomComboBox: TCustomComboBox; NewLength: integer);
begin
WidgetSetSelLength(PGtkCombo(ACustomComboBox.Handle)^.entry, NewLength);
end;
procedure TGtkWSCustomComboBox.SetItemIndex(const ACustomComboBox: TCustomComboBox; NewIndex: integer);
begin
// TODO: ugly typecast
SetComboBoxItemIndex(TComboBox(ACustomComboBox), NewIndex);
end;
procedure TGtkWSCustomComboBox.SetMaxLength(const ACustomComboBox: TCustomComboBox; NewLength: integer);
begin
gtk_entry_set_max_length(PGtkEntry(PGtkCombo(ACustomComboBox.Handle)^.entry), NewLength);
end;
function TGtkWSCustomComboBox.GetItems(const ACustomComboBox: TCustomComboBox): TStrings;
begin
Result := TStrings(gtk_object_get_data(PGtkObject(ACustomComboBox.Handle), 'LCLList'));
end;
procedure TGtkWSCustomComboBox.Sort(const ACustomComboBox: TCustomComboBox; AList: TStrings; IsSorted: boolean);
begin
TGtkListStringList(AList).Sorted := IsSorted;
end;
{ TGtkWSCustomEdit }
function TGtkWSCustomEdit.GetSelStart(const ACustomEdit: TCustomEdit): integer;
begin
{$IfDef GTK1}
Result := WidgetGetSelStart(GetWidgetInfo(Pointer(ACustomEdit.Handle), true)^.CoreWidget);
{$EndIf}
end;
function TGtkWSCustomEdit.GetSelLength(const ACustomEdit: TCustomEdit): integer;
begin
{$IfDef GTK1}
with PGtkOldEditable(GetWidgetInfo(Pointer(ACustomEdit.Handle), true)^.CoreWidget)^ do begin
Result:=Abs(integer(selection_end_pos)-integer(selection_start_pos));
end;
{$EndIf}
end;
procedure TGtkWSCustomEdit.SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer);
begin
{$IfDef GTK1}
gtk_editable_set_position(PGtkOldEditable(GetWidgetInfo(
Pointer(ACustomEdit.Handle), true)^.CoreWidget), NewStart);
{$EndIf}
end;
procedure TGtkWSCustomEdit.SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer);
begin
{$IfDef GTK1}
WidgetSetSelLength(GetWidgetInfo(Pointer(ACustomEdit.Handle), true)^.CoreWidget, NewLength);
{$EndIf}
end;
initialization initialization
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
@ -221,11 +357,11 @@ initialization
// RegisterWSComponent(TScrollBar, TGtkWSScrollBar); // RegisterWSComponent(TScrollBar, TGtkWSScrollBar);
// RegisterWSComponent(TCustomGroupBox, TGtkWSCustomGroupBox); // RegisterWSComponent(TCustomGroupBox, TGtkWSCustomGroupBox);
// RegisterWSComponent(TGroupBox, TGtkWSGroupBox); // RegisterWSComponent(TGroupBox, TGtkWSGroupBox);
// RegisterWSComponent(TCustomComboBox, TGtkWSCustomComboBox); RegisterWSComponent(TCustomComboBox, TGtkWSCustomComboBox);
// RegisterWSComponent(TComboBox, TGtkWSComboBox); // RegisterWSComponent(TComboBox, TGtkWSComboBox);
// RegisterWSComponent(TCustomListBox, TGtkWSCustomListBox); // RegisterWSComponent(TCustomListBox, TGtkWSCustomListBox);
// RegisterWSComponent(TListBox, TGtkWSListBox); // RegisterWSComponent(TListBox, TGtkWSListBox);
// RegisterWSComponent(TCustomEdit, TGtkWSCustomEdit); RegisterWSComponent(TCustomEdit, TGtkWSCustomEdit);
// RegisterWSComponent(TCustomMemo, TGtkWSCustomMemo); // RegisterWSComponent(TCustomMemo, TGtkWSCustomMemo);
// RegisterWSComponent(TEdit, TGtkWSEdit); // RegisterWSComponent(TEdit, TGtkWSEdit);
// RegisterWSComponent(TMemo, TGtkWSMemo); // RegisterWSComponent(TMemo, TGtkWSMemo);

View File

@ -238,7 +238,7 @@ Uses
// Win32WSMaskEdit, // Win32WSMaskEdit,
// Win32WSMenus, // Win32WSMenus,
// Win32WSPairSplitter, // Win32WSPairSplitter,
// Win32WSSpin, Win32WSSpin,
Win32WSStdCtrls, Win32WSStdCtrls,
// Win32WSToolwin, // Win32WSToolwin,
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
@ -285,6 +285,9 @@ End.
{ ============================================================================= { =============================================================================
$Log$ $Log$
Revision 1.95 2004/09/07 09:44:46 micha
convert lcl messages to new interface using methods: LM_{G,S}ETSELSTART, LM_{G,S}ETSELLEN, LM_{G,S}ETLIMITTEXT
Revision 1.94 2004/08/27 08:55:23 micha Revision 1.94 2004/08/27 08:55:23 micha
implement tapplication.minimize for win32, stub for gtk implement tapplication.minimize for win32, stub for gtk

View File

@ -423,7 +423,7 @@ Var
//CBI: COMBOBOXINFO; //CBI: COMBOBOXINFO;
DC: HDC; DC: HDC;
Handle: HWND; Handle: HWND;
I, Num: Integer; Num: Integer;
PStr, PStr2: PChar; PStr, PStr2: PChar;
SizeRect: TRECT; // used by LM_SETSIZE,LM_INVALIDATE,LM_CLB_SET_CHECKED and LM_REDRAW SizeRect: TRECT; // used by LM_SETSIZE,LM_INVALIDATE,LM_CLB_SET_CHECKED and LM_REDRAW
S: String; S: String;
@ -801,15 +801,6 @@ activate_time : the time at which the activation event occurred.
LM_GETITEMINDEX : LM_GETITEMINDEX :
Begin Begin
Case (Sender as TControl).FCompStyle Of Case (Sender as TControl).FCompStyle Of
csComboBox:
Begin
Result := SendMessage(Handle, CB_GETCURSEL, 0, 0);
if Result = LB_ERR Then
Begin
Assert(False, 'Trace:[TWin32WidgetSet.IntSendMessage3] Could not retrieve item index via LM_GETITEMINDEX; try selecting an item first');
Result := -1;
End;
End;
csListBox, csCListBox: csListBox, csCListBox:
Begin Begin
Result := SendMessage(Handle, LB_GETCURSEL, 0, 0); Result := SendMessage(Handle, LB_GETCURSEL, 0, 0);
@ -828,7 +819,6 @@ activate_time : the time at which the activation event occurred.
LM_SETITEMINDEX : LM_SETITEMINDEX :
Begin Begin
Case (Sender as TControl).FCompStyle Of Case (Sender as TControl).FCompStyle Of
csComboBox: Windows.SendMessage(Handle, CB_SETCURSEL, Windows.WParam(Integer(Data)), 0);
csListBox, csCListBox: csListBox, csCListBox:
Begin Begin
If TListBox(Sender).MultiSelect Then If TListBox(Sender).MultiSelect Then
@ -843,73 +833,6 @@ activate_time : the time at which the activation event occurred.
End; End;
End; End;
End; End;
LM_GETSELSTART:
begin
case (Sender as TControl).FCompStyle of
csComboBox:
begin
Result := Low(Windows.SendMessage(Handle, CB_GETEDITSEL, Windows.WPARAM(nil), Windows.LPARAM(nil)));
end;
csEdit:
begin
Windows.SendMessage(Handle, EM_GETSEL, Windows.WPARAM(@i), 0);
Result := i;
end;
end;
end;
LM_GETSELLEN:
begin
case (Sender as TControl).FCompStyle of
csComboBox:
begin
Result := Windows.SendMessage(Handle, CB_GETEDITSEL, Windows.WPARAM(nil), Windows.LPARAM(nil));
end;
csEdit:
begin
Windows.SendMessage(Handle, EM_GETSEL, Windows.WPARAM(@i), Windows.LPARAM(@num));
Result := num-i;
end;
end;
end;
LM_GETLIMITTEXT:
Begin
If (Sender as TControl).FCompStyle = csComboBox Then
Begin
Result := Integer(GetProp(Handle, 'LIMIT_TEXT'));
End;
End;
LM_SETSELSTART:
Begin
if Sender is TControl then
case TControl(Sender).FCompStyle of
csComboBox:
begin
SendMessage(Handle, CB_SETEDITSEL, 0, MakeLParam(integer(Data), integer(Data)));
end;
csEdit:
begin
SendMessage(Handle, EM_SETSEL, Windows.WParam(Data), Windows.LParam(Data));
end;
end;
End;
LM_SETSELLEN:
Begin
if Sender is TControl then
Case TControl(Sender).FCompStyle of
csComboBox:
begin
Windows.SendMessage(Handle, CB_GETEDITSEL, Windows.Wparam(@i), Windows.LParam(@Num));
Num := i + Integer(Data);
Windows.SendMessage(Handle, CB_SETEDITSEL, 0, MakeLParam( i, Num ));
end;
csEdit:
begin
Windows.SendMessage(Handle, EM_GETSEL, Windows.Wparam(@i), Windows.LParam(@Num));
Num := i + Integer(Data);
Windows.SendMessage(Handle, EM_SETSEL, Windows.WParam(i), Windows.LParam(Num));
end;
end;
End;
LM_GETLINECOUNT: LM_GETLINECOUNT:
Begin Begin
If Sender Is TCustomMemo Then If Sender Is TCustomMemo Then
@ -944,7 +867,7 @@ activate_time : the time at which the activation event occurred.
If (Sender Is TControl) And Assigned(Data) Then If (Sender Is TControl) And Assigned(Data) Then
Begin Begin
Case TControl(Sender).FCompStyle Of Case TControl(Sender).FCompStyle Of
csComboBox, csListBox: csListBox:
TWin32ListStringList(TLMSort(Data^).List).Sorted := TWin32ListStringList(TLMSort(Data^).List).Sorted :=
TLMSort(Data^).IsSorted; TLMSort(Data^).IsSorted;
csCListBox: csCListBox:
@ -1338,8 +1261,6 @@ Begin
Str := Lowercase(PChar(@Cls[0])); Str := Lowercase(PChar(@Cls[0]));
If Str = 'edit' Then If Str = 'edit' Then
Msg := CB_LIMITTEXT Msg := CB_LIMITTEXT
Else If Str = 'combo' Then
Msg := EM_LIMITTEXT
Else Else
Exit; Exit;
@ -2666,10 +2587,6 @@ Begin
With ST Do With ST Do
TLMCalendar(Data^).Date := EncodeDate(WYear,WMonth,WDay); TLMCalendar(Data^).Date := EncodeDate(WYear,WMonth,WDay);
End; End;
csSpinEdit:
Begin
Single(Data^) := SendMessage(Handle, UDM_GETPOS, 0, 0);
End;
Else Else
Assert (True, Format('WARNING:[TWin32WidgetSet.GetValue]] failed for %S', [Sender.ClassName])); Assert (True, Format('WARNING:[TWin32WidgetSet.GetValue]] failed for %S', [Sender.ClassName]));
End; End;
@ -3092,6 +3009,9 @@ End;
{ {
$Log$ $Log$
Revision 1.231 2004/09/07 09:44:46 micha
convert lcl messages to new interface using methods: LM_{G,S}ETSELSTART, LM_{G,S}ETSELLEN, LM_{G,S}ETLIMITTEXT
Revision 1.230 2004/09/06 15:08:32 micha Revision 1.230 2004/09/06 15:08:32 micha
implement LM_GETSELLEN en LM_GETSELSTART for win32 edit controls implement LM_GETSELLEN en LM_GETSELSTART for win32 edit controls

View File

@ -33,9 +33,9 @@ uses
// To get as little as posible circles, // To get as little as posible circles,
// uncomment only when needed for registration // uncomment only when needed for registration
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
// Spin, Spin,
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
WSSpin, WSLCLClasses; WSSpin, WSLCLClasses, Win32WSStdCtrls, Windows;
type type
@ -45,6 +45,12 @@ type
private private
protected protected
public public
class function GetSelStart(const ACustomSpinEdit: TCustomSpinEdit): integer; override;
class function GetSelLength(const ACustomSpinEdit: TCustomSpinEdit): integer; override;
class function GetValue(const ACustomSpinEdit: TCustomSpinEdit): single; override;
class procedure SetSelStart(const ACustomSpinEdit: TCustomSpinEdit; NewStart: integer); override;
class procedure SetSelLength(const ACustomSpinEdit: TCustomSpinEdit; NewLength: integer); override;
end; end;
{ TWin32WSSpinEdit } { TWin32WSSpinEdit }
@ -58,6 +64,33 @@ type
implementation implementation
{ TWin32WSCustomSpinEdit }
function TWin32WSCustomSpinEdit.GetSelStart(const ACustomSpinEdit: TCustomSpinEdit): integer;
begin
Result := EditGetSelStart(SendMessage(ACustomSpinEdit.Handle, UDM_GETBUDDY, 0, 0));
end;
function TWin32WSCustomSpinEdit.GetSelLength(const ACustomSpinEdit: TCustomSpinEdit): integer;
begin
Result := EditGetSelLength(SendMessage(ACustomSpinEdit.Handle, UDM_GETBUDDY, 0, 0));
end;
function TWin32WSCustomSpinEdit.GetValue(const ACustomSpinEdit: TCustomSpinEdit): single;
begin
Result := SendMessage(ACustomSpinEdit.Handle, UDM_GETPOS, 0, 0);
end;
procedure TWin32WSCustomSpinEdit.SetSelStart(const ACustomSpinEdit: TCustomSpinEdit; NewStart: integer);
begin
EditSetSelStart(SendMessage(ACustomSpinEdit.Handle, UDM_GETBUDDY, 0, 0), NewStart);
end;
procedure TWin32WSCustomSpinEdit.SetSelLength(const ACustomSpinEdit: TCustomSpinEdit; NewLength: integer);
begin
EditSetSelLength(SendMessage(ACustomSpinEdit.Handle, UDM_GETBUDDY, 0, 0), NewLength);
end;
initialization initialization
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
@ -66,7 +99,7 @@ initialization
// To improve speed, register only classes // To improve speed, register only classes
// which actually implement something // which actually implement something
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
// RegisterWSComponent(TCustomSpinEdit, TWin32WSCustomSpinEdit); RegisterWSComponent(TCustomSpinEdit, TWin32WSCustomSpinEdit);
// RegisterWSComponent(TSpinEdit, TWin32WSSpinEdit); // RegisterWSComponent(TSpinEdit, TWin32WSSpinEdit);
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
end. end.

View File

@ -35,7 +35,7 @@ uses
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
StdCtrls, StdCtrls,
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
WSStdCtrls, WSLCLClasses; WSStdCtrls, WSLCLClasses, Classes, Windows;
type type
@ -69,6 +69,18 @@ type
private private
protected protected
public public
class function GetSelStart(const ACustomComboBox: TCustomComboBox): integer; override;
class function GetSelLength(const ACustomComboBox: TCustomComboBox): integer; override;
class function GetItemIndex(const ACustomComboBox: TCustomComboBox): integer; override;
class function GetMaxLength(const ACustomComboBox: TCustomComboBox): integer; override;
class procedure SetSelStart(const ACustomComboBox: TCustomComboBox; NewStart: integer); override;
class procedure SetSelLength(const ACustomComboBox: TCustomComboBox; NewLength: integer); override;
class procedure SetItemIndex(const ACustomComboBox: TCustomComboBox; NewIndex: integer); override;
class procedure SetMaxLength(const ACustomComboBox: TCustomComboBox; NewLength: integer); override;
class function GetItems(const ACustomComboBox: TCustomComboBox): TStrings; override;
class procedure Sort(const ACustomComboBox: TCustomComboBox; AList: TStrings; IsSorted: boolean); override;
end; end;
{ TWin32WSComboBox } { TWin32WSComboBox }
@ -102,6 +114,11 @@ type
private private
protected protected
public public
class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override;
class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override;
class procedure SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); override;
class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
end; end;
{ TWin32WSCustomMemo } { TWin32WSCustomMemo }
@ -200,6 +217,12 @@ type
public public
end; end;
{ useful helper functions }
function EditGetSelStart(WinHandle: HWND): integer;
function EditGetSelLength(WinHandle: HWND): integer;
procedure EditSetSelStart(WinHandle: HWND; NewStart: integer);
procedure EditSetSelLength(WinHandle: HWND; NewLength: integer);
implementation implementation
@ -214,6 +237,129 @@ begin
TWin32WidgetSet(InterfaceObject).RecreateWnd(ACustomListBox); TWin32WidgetSet(InterfaceObject).RecreateWnd(ACustomListBox);
end; end;
{ TWin32WSCustomComboBox }
function TWin32WSCustomComboBox.GetSelStart(const ACustomComboBox: TCustomComboBox): integer;
begin
Result := Low(SendMessage(ACustomComboBox.Handle, CB_GETEDITSEL, Windows.WPARAM(nil), Windows.LPARAM(nil)));
end;
function TWin32WSCustomComboBox.GetSelLength(const ACustomComboBox: TCustomComboBox): integer;
begin
Result := SendMessage(ACustomComboBox.Handle, CB_GETEDITSEL, Windows.WPARAM(nil), Windows.LPARAM(nil));
end;
function TWin32WSCustomComboBox.GetItemIndex(const ACustomComboBox: TCustomComboBox): integer;
begin
Result := SendMessage(ACustomComboBox.Handle, CB_GETCURSEL, 0, 0);
if Result = LB_ERR Then
Begin
Assert(False, 'Trace:[TWin32WidgetSet.IntSendMessage3] Could not retrieve item index '+
'via LM_GETITEMINDEX; try selecting an item first');
Result := -1;
End;
end;
function TWin32WSCustomComboBox.GetMaxLength(const ACustomComboBox: TCustomComboBox): integer;
begin
Result := integer(GetProp(ACustomComboBox.Handle, 'MAXLENGTH'));
end;
procedure TWin32WSCustomComboBox.SetSelStart(const ACustomComboBox: TCustomComboBox; NewStart: integer);
begin
SendMessage(ACustomComboBox.Handle, CB_SETEDITSEL, 0, MakeLParam(NewStart, NewStart));
end;
procedure TWin32WSCustomComboBox.SetSelLength(const ACustomComboBox: TCustomComboBox; NewLength: integer);
var
startpos, endpos: integer;
winhandle: HWND;
begin
winhandle := ACustomComboBox.Handle;
SendMessage(winhandle, CB_GETEDITSEL, Windows.WParam(@startpos), Windows.LParam(@endpos));
endpos := startpos + NewLength;
SendMessage(winhandle, CB_SETEDITSEL, 0, MakeLParam(startpos, endpos));
end;
procedure TWin32WSCustomComboBox.SetItemIndex(const ACustomComboBox: TCustomComboBox; NewIndex: integer);
begin
SendMessage(ACustomComboBox.Handle, CB_SETCURSEL, Windows.WParam(NewIndex), 0);
end;
procedure TWin32WSCustomComboBox.SetMaxLength(const ACustomComboBox: TCustomComboBox; NewLength: integer);
var
winhandle: HWND;
begin
winhandle := ACustomComboBox.Handle;
SendMessage(winhandle, CB_LIMITTEXT, NewLength, 0);
SetProp(winhandle, 'MAXLENGTH', NewLength);
end;
function TWin32WSCustomComboBox.GetItems(const ACustomComboBox: TCustomComboBox): TStrings;
var
winhandle: HWND;
begin
winhandle := ACustomComboBox.Handle;
Result := TWin32ListStringList.Create(winhandle, ACustomComboBox);
SetProp(winhandle, 'List', dword(Result));
end;
procedure TWin32WSCustomComboBox.Sort(const ACustomComboBox: TCustomComboBox; AList: TStrings; IsSorted: boolean);
begin
TWin32ListStringList(AList).Sorted := IsSorted;
end;
{ TWin32WSCustomEdit helper functions }
function EditGetSelStart(WinHandle: HWND): integer;
begin
SendMessage(WinHandle, EM_GETSEL, Windows.WPARAM(@Result), 0);
end;
function EditGetSelLength(WinHandle: HWND): integer;
var
startpos, endpos: integer;
begin
SendMessage(WinHandle, EM_GETSEL, Windows.WPARAM(@startpos), Windows.LPARAM(@endpos));
Result := endpos - startpos;
end;
procedure EditSetSelStart(WinHandle: HWND; NewStart: integer);
begin
SendMessage(WinHandle, EM_SETSEL, Windows.WParam(NewStart), Windows.LParam(NewStart));
end;
procedure EditSetSelLength(WinHandle: HWND; NewLength: integer);
var
startpos, endpos: integer;
begin
Windows.SendMessage(WinHandle, EM_GETSEL, Windows.WParam(@startpos), Windows.LParam(@endpos));
endpos := startpos + NewLength;
Windows.SendMessage(WinHandle, EM_SETSEL, Windows.WParam(startpos), Windows.LParam(endpos));
end;
{ TWin32WSCustomEdit }
function TWin32WSCustomEdit.GetSelStart(const ACustomEdit: TCustomEdit): integer;
begin
Result := EditGetSelStart(ACustomEdit.Handle);
end;
function TWin32WSCustomEdit.GetSelLength(const ACustomEdit: TCustomEdit): integer;
begin
Result := EditGetSelLength(ACustomEdit.Handle);
end;
procedure TWin32WSCustomEdit.SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer);
begin
EditSetSelStart(ACustomEdit.Handle, NewStart);
end;
procedure TWin32WSCustomEdit.SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer);
begin
EditSetSelLength(ACustomEdit.Handle, NewLength);
end;
initialization initialization
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
@ -225,11 +371,11 @@ initialization
// RegisterWSComponent(TScrollBar, TWin32WSScrollBar); // RegisterWSComponent(TScrollBar, TWin32WSScrollBar);
// RegisterWSComponent(TCustomGroupBox, TWin32WSCustomGroupBox); // RegisterWSComponent(TCustomGroupBox, TWin32WSCustomGroupBox);
// RegisterWSComponent(TGroupBox, TWin32WSGroupBox); // RegisterWSComponent(TGroupBox, TWin32WSGroupBox);
// RegisterWSComponent(TCustomComboBox, TWin32WSCustomComboBox); RegisterWSComponent(TCustomComboBox, TWin32WSCustomComboBox);
// RegisterWSComponent(TComboBox, TWin32WSComboBox); // RegisterWSComponent(TComboBox, TWin32WSComboBox);
RegisterWSComponent(TCustomListBox, TWin32WSCustomListBox); RegisterWSComponent(TCustomListBox, TWin32WSCustomListBox);
// RegisterWSComponent(TListBox, TWin32WSListBox); // RegisterWSComponent(TListBox, TWin32WSListBox);
// RegisterWSComponent(TCustomEdit, TWin32WSCustomEdit); RegisterWSComponent(TCustomEdit, TWin32WSCustomEdit);
// RegisterWSComponent(TCustomMemo, TWin32WSCustomMemo); // RegisterWSComponent(TCustomMemo, TWin32WSCustomMemo);
// RegisterWSComponent(TEdit, TWin32WSEdit); // RegisterWSComponent(TEdit, TWin32WSEdit);
// RegisterWSComponent(TMemo, TWin32WSMemo); // RegisterWSComponent(TMemo, TWin32WSMemo);

View File

@ -107,12 +107,6 @@ const
LM_SETITEMINDEX = LM_COMUSER+65; LM_SETITEMINDEX = LM_COMUSER+65;
LM_GETSELTEXT = LM_COMUSER+66; LM_GETSELTEXT = LM_COMUSER+66;
LM_SETSELTEXT = LM_COMUSER+67; LM_SETSELTEXT = LM_COMUSER+67;
LM_GETSELSTART = LM_COMUSER+68;
LM_SETSELSTART = LM_COMUSER+69;
LM_GETSELLEN = LM_COMUSER+70;
LM_SETSELLEN = LM_COMUSER+71;
LM_GETLIMITTEXT = LM_COMUSER+72;
LM_SETLIMITTEXT = LM_COMUSER+73;
LM_SORT = LM_COMUSER+74; LM_SORT = LM_COMUSER+74;
LM_GETSELCOUNT = LM_COMUSER+75; LM_GETSELCOUNT = LM_COMUSER+75;
LM_GETSEL = LM_COMUSER+76; LM_GETSEL = LM_COMUSER+76;
@ -928,12 +922,6 @@ begin
LM_SETITEMINDEX :Result:='LM_SETITEMINDEX'; LM_SETITEMINDEX :Result:='LM_SETITEMINDEX';
LM_GETSELTEXT :Result:='LM_GETSELTEXT'; LM_GETSELTEXT :Result:='LM_GETSELTEXT';
LM_SETSELTEXT :Result:='LM_SETSELTEXT'; LM_SETSELTEXT :Result:='LM_SETSELTEXT';
LM_GETSELSTART :Result:='LM_GETSELSTART';
LM_SETSELSTART :Result:='LM_SETSELSTART';
LM_GETSELLEN :Result:='LM_GETSELLEN';
LM_SETSELLEN :Result:='LM_SETSELLEN';
LM_GETLIMITTEXT :Result:='LM_GETLIMITTEXT';
LM_SETLIMITTEXT :Result:='LM_SETLIMITTEXT';
LM_SORT :Result:='LM_SORT'; LM_SORT :Result:='LM_SORT';
LM_GETSELCOUNT :Result:='LM_GETSELCOUNT'; LM_GETSELCOUNT :Result:='LM_GETSELCOUNT';
LM_GETSEL :Result:='LM_GETSEL'; LM_GETSEL :Result:='LM_GETSEL';
@ -1056,6 +1044,9 @@ end.
{ {
$Log$ $Log$
Revision 1.73 2004/09/07 09:44:46 micha
convert lcl messages to new interface using methods: LM_{G,S}ETSELSTART, LM_{G,S}ETSELLEN, LM_{G,S}ETLIMITTEXT
Revision 1.72 2004/08/30 16:37:58 mattias Revision 1.72 2004/08/30 16:37:58 mattias
added OnUTF8KeyPresss added OnUTF8KeyPresss

View File

@ -133,6 +133,9 @@ procedure Register;
Implementation Implementation
uses
WSSpin;
procedure Register; procedure Register;
begin begin
RegisterComponents('Misc',[TSpinEdit]); RegisterComponents('Misc',[TSpinEdit]);

View File

@ -44,7 +44,7 @@ uses
// To get as little as posible circles, // To get as little as posible circles,
// uncomment only when needed for registration // uncomment only when needed for registration
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
// Spin, Spin,
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
WSLCLClasses, WSControls; WSLCLClasses, WSControls;
@ -52,7 +52,15 @@ type
{ TWSCustomSpinEdit } { TWSCustomSpinEdit }
TWSCustomSpinEdit = class(TWSWinControl) TWSCustomSpinEdit = class(TWSWinControl)
public
class function GetSelStart(const ACustomSpinEdit: TCustomSpinEdit): integer; virtual;
class function GetSelLength(const ACustomSpinEdit: TCustomSpinEdit): integer; virtual;
class function GetValue(const ACustomSpinEdit: TCustomSpinEdit): single; virtual;
class procedure SetSelStart(const ACustomSpinEdit: TCustomSpinEdit; NewStart: integer); virtual;
class procedure SetSelLength(const ACustomSpinEdit: TCustomSpinEdit; NewLength: integer); virtual;
end; end;
TWSCustomSpinEditClass = class of TWSCustomSpinEdit;
{ TWSSpinEdit } { TWSSpinEdit }
@ -62,13 +70,38 @@ type
implementation implementation
{ TWSCustomSpinEdit }
function TWSCustomSpinEdit.GetSelStart(const ACustomSpinEdit: TCustomSpinEdit): integer;
begin
result := -1;
end;
function TWSCustomSpinEdit.GetSelLength(const ACustomSpinEdit: TCustomSpinEdit): integer;
begin
result := 0;
end;
function TWSCustomSpinEdit.GetValue(const ACustomSpinEdit: TCustomSpinEdit): single;
begin
result := 0.0;
end;
procedure TWSCustomSpinEdit.SetSelStart(const ACustomSpinEdit: TCustomSpinEdit; NewStart: integer);
begin
end;
procedure TWSCustomSpinEdit.SetSelLength(const ACustomSpinEdit: TCustomSpinEdit; NewLength: integer);
begin
end;
initialization initialization
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
// To improve speed, register only classes // To improve speed, register only classes
// which actually implement something // which actually implement something
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
// RegisterWSComponent(TCustomSpinEdit, TWSCustomSpinEdit); RegisterWSComponent(TCustomSpinEdit, TWSCustomSpinEdit);
// RegisterWSComponent(TSpinEdit, TWSSpinEdit); // RegisterWSComponent(TSpinEdit, TWSSpinEdit);
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
end. end.

View File

@ -46,7 +46,7 @@ uses
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
StdCtrls, StdCtrls,
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
WSLCLClasses, WSControls; WSLCLClasses, WSControls, Classes;
type type
{ TWSScrollBar } { TWSScrollBar }
@ -67,7 +67,21 @@ type
{ TWSCustomComboBox } { TWSCustomComboBox }
TWSCustomComboBox = class(TWSWinControl) TWSCustomComboBox = class(TWSWinControl)
public
class function GetSelStart(const ACustomComboBox: TCustomComboBox): integer; virtual;
class function GetSelLength(const ACustomComboBox: TCustomComboBox): integer; virtual;
class function GetItemIndex(const ACustomComboBox: TCustomComboBox): integer; virtual;
class function GetMaxLength(const ACustomComboBox: TCustomComboBox): integer; virtual;
class procedure SetSelStart(const ACustomComboBox: TCustomComboBox; NewStart: integer); virtual;
class procedure SetSelLength(const ACustomComboBox: TCustomComboBox; NewLength: integer); virtual;
class procedure SetItemIndex(const ACustomComboBox: TCustomComboBox; NewIndex: integer); virtual;
class procedure SetMaxLength(const ACustomComboBox: TCustomComboBox; NewLength: integer); virtual;
class function GetItems(const ACustomComboBox: TCustomComboBox): TStrings; virtual;
class procedure Sort(const ACustomComboBox: TCustomComboBox; AList: TStrings; IsSorted: boolean); virtual;
end; end;
TWSCustomComboBoxClass = class of TWSCustomComboBox;
{ TWSComboBox } { TWSComboBox }
@ -90,7 +104,14 @@ type
{ TWSCustomEdit } { TWSCustomEdit }
TWSCustomEdit = class(TWSWinControl) TWSCustomEdit = class(TWSWinControl)
public
class function GetSelStart(const ACustomEdit: TCustomEdit): integer; virtual;
class function GetSelLength(const ACustomEdit: TCustomEdit): integer; virtual;
class procedure SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); virtual;
class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); virtual;
end; end;
TWSCustomEditClass = class of TWSCustomEdit;
{ TWSCustomMemo } { TWSCustomMemo }
@ -161,6 +182,73 @@ procedure TWSCustomListBox.SetStyle(const ACustomListBox: TCustomListBox);
begin begin
end; end;
{ TWSCustomComboBox }
function TWSCustomComboBox.GetSelStart(const ACustomComboBox: TCustomComboBox): integer;
begin
result := -1;
end;
function TWSCustomComboBox.GetSelLength(const ACustomComboBox: TCustomComboBox): integer;
begin
result := 0;
end;
function TWSCustomComboBox.GetItemIndex(const ACustomComboBox: TCustomComboBox): integer;
begin
result := -1;
end;
function TWSCustomComboBox.GetMaxLength(const ACustomComboBox: TCustomComboBox): integer;
begin
result := 0;
end;
procedure TWSCustomComboBox.SetSelStart(const ACustomComboBox: TCustomComboBox; NewStart: integer);
begin
end;
procedure TWSCustomComboBox.SetSelLength(const ACustomComboBox: TCustomComboBox; NewLength: integer);
begin
end;
procedure TWSCustomComboBox.SetItemIndex(const ACustomComboBox: TCustomComboBox; NewIndex: integer);
begin
end;
procedure TWSCustomComboBox.SetMaxLength(const ACustomComboBox: TCustomComboBox; NewLength: integer);
begin
end;
function TWSCustomComboBox.GetItems(const ACustomComboBox: TCustomComboBox): TStrings;
begin
result := nil;
end;
procedure TWSCustomComboBox.Sort(const ACustomComboBox: TCustomComboBox; AList: TStrings; IsSorted: boolean);
begin
end;
{ TWSCustomEdit }
function TWSCustomEdit.GetSelStart(const ACustomEdit: TCustomEdit): integer;
begin
result := -1;
end;
function TWSCustomEdit.GetSelLength(const ACustomEdit: TCustomEdit): integer;
begin
result := 0;
end;
procedure TWSCustomEdit.SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer);
begin
end;
procedure TWSCustomEdit.SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer);
begin
end;
initialization initialization
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
@ -170,11 +258,11 @@ initialization
// RegisterWSComponent(TScrollBar, TWSScrollBar); // RegisterWSComponent(TScrollBar, TWSScrollBar);
// RegisterWSComponent(TCustomGroupBox, TWSCustomGroupBox); // RegisterWSComponent(TCustomGroupBox, TWSCustomGroupBox);
// RegisterWSComponent(TGroupBox, TWSGroupBox); // RegisterWSComponent(TGroupBox, TWSGroupBox);
// RegisterWSComponent(TCustomComboBox, TWSCustomComboBox); RegisterWSComponent(TCustomComboBox, TWSCustomComboBox);
// RegisterWSComponent(TComboBox, TWSComboBox); // RegisterWSComponent(TComboBox, TWSComboBox);
RegisterWSComponent(TCustomListBox, TWSCustomListBox); RegisterWSComponent(TCustomListBox, TWSCustomListBox);
// RegisterWSComponent(TListBox, TWSListBox); // RegisterWSComponent(TListBox, TWSListBox);
// RegisterWSComponent(TCustomEdit, TWSCustomEdit); RegisterWSComponent(TCustomEdit, TWSCustomEdit);
// RegisterWSComponent(TCustomMemo, TWSCustomMemo); // RegisterWSComponent(TCustomMemo, TWSCustomMemo);
// RegisterWSComponent(TEdit, TWSEdit); // RegisterWSComponent(TEdit, TWSEdit);
// RegisterWSComponent(TMemo, TWSMemo); // RegisterWSComponent(TMemo, TWSMemo);