- complete TQtWSCustomMemo
- cleanup

git-svn-id: trunk@11986 -
This commit is contained in:
paul 2007-09-10 08:41:29 +00:00
parent ff9b99ac43
commit 2a2f1d799f
2 changed files with 230 additions and 127 deletions

View File

@ -151,6 +151,62 @@ type
property Widget: QWidgetH read GetWidget write SetWidget;
end;
{ TQtAbstractSlider , inherited by TQtScrollBar, TQtTrackBar }
TQtAbstractSlider = class(TQtWidget)
private
FSliderPressed: Boolean;
FSliderReleased: Boolean;
FRangeChangedHook: QAbstractSlider_hookH;
FSliderMovedHook: QAbstractSlider_hookH;
FSliderPressedHook: QAbstractSlider_hookH;
FSliderReleasedHook: QAbstractSlider_hookH;
FValueChangedHook: QAbstractSlider_hookH;
protected
function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
public
procedure AttachEvents; override;
procedure DetachEvents; override;
procedure SlotSliderMoved(p1: Integer); cdecl; virtual;
procedure SlotValueChanged(p1: Integer); cdecl; virtual;
procedure SlotRangeChanged(minimum: Integer; maximum: Integer); cdecl; virtual;
procedure SlotSliderPressed; cdecl;
procedure SlotSliderReleased; cdecl;
public
function getValue: Integer;
function getPageStep: Integer;
function getMin: Integer;
function getMax: Integer;
function getSingleStep: Integer;
procedure setInvertedAppereance(p1: Boolean); virtual;
procedure setInvertedControls(p1: Boolean); virtual;
procedure setMaximum(p1: Integer); virtual;
procedure setMinimum(p1: Integer); virtual;
procedure setOrientation(p1: QtOrientation); virtual;
procedure setPageStep(p1: Integer); virtual;
procedure setRange(minimum: Integer; maximum: Integer); virtual;
procedure setSingleStep(p1: Integer); virtual;
procedure setSliderDown(p1: Boolean); virtual;
procedure setSliderPosition(p1: Integer); virtual;
procedure setTracking(p1: Boolean); virtual;
procedure setValue(p1: Integer); virtual;
property SliderPressed: Boolean read FSliderPressed;
property SliderReleased: Boolean read FSliderReleased;
end;
{ TQtScrollBar }
TQtScrollBar = class(TQtAbstractSlider)
protected
function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
public
procedure AttachEvents; override;
end;
{ TQtFrame }
TQtFrame = class(TQtWidget)
@ -164,6 +220,34 @@ type
procedure setTextColor(const Value: PQColor); override;
end;
{ TQtAbstractScrollArea }
TQtAbstractScrollArea = class(TQtFrame)
private
FCornerWidget: TQtWidget;
FViewPortWidget: TQtWidget;
FHScrollbar: TQtScrollBar;
FVScrollbar: TQtScrollbar;
protected
function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
public
destructor Destroy; override;
public
function cornerWidget: TQtWidget;
function horizontalScrollBar: TQtScrollBar;
function verticalScrollBar: TQtScrollBar;
function viewport: TQtWidget;
function getClientBounds: TRect; override;
procedure SetColor(const Value: PQColor); override;
procedure setCornerWidget(AWidget: TQtWidget);
procedure setHorizontalScrollBar(AScrollBar: TQtScrollBar);
procedure setScrollStyle(AScrollStyle: TScrollStyle);
procedure setTextColor(const Value: PQColor); override;
procedure setVerticalScrollBar(AScrollBar: TQtScrollBar);
procedure setVisible(visible: Boolean); override;
procedure viewportNeeded;
end;
{ TQtArrow }
TQtArrow = class(TQtFrame)
@ -295,62 +379,6 @@ type
destructor Destroy; override;
end;
{ TQtAbstractSlider , inherited by TQtScrollBar, TQtTrackBar }
TQtAbstractSlider = class(TQtWidget)
private
FSliderPressed: Boolean;
FSliderReleased: Boolean;
FRangeChangedHook: QAbstractSlider_hookH;
FSliderMovedHook: QAbstractSlider_hookH;
FSliderPressedHook: QAbstractSlider_hookH;
FSliderReleasedHook: QAbstractSlider_hookH;
FValueChangedHook: QAbstractSlider_hookH;
protected
function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
public
procedure AttachEvents; override;
procedure DetachEvents; override;
procedure SlotSliderMoved(p1: Integer); cdecl; virtual;
procedure SlotValueChanged(p1: Integer); cdecl; virtual;
procedure SlotRangeChanged(minimum: Integer; maximum: Integer); cdecl; virtual;
procedure SlotSliderPressed; cdecl;
procedure SlotSliderReleased; cdecl;
public
function getValue: Integer;
function getPageStep: Integer;
function getMin: Integer;
function getMax: Integer;
function getSingleStep: Integer;
procedure setInvertedAppereance(p1: Boolean); virtual;
procedure setInvertedControls(p1: Boolean); virtual;
procedure setMaximum(p1: Integer); virtual;
procedure setMinimum(p1: Integer); virtual;
procedure setOrientation(p1: QtOrientation); virtual;
procedure setPageStep(p1: Integer); virtual;
procedure setRange(minimum: Integer; maximum: Integer); virtual;
procedure setSingleStep(p1: Integer); virtual;
procedure setSliderDown(p1: Boolean); virtual;
procedure setSliderPosition(p1: Integer); virtual;
procedure setTracking(p1: Boolean); virtual;
procedure setValue(p1: Integer); virtual;
property SliderPressed: Boolean read FSliderPressed;
property SliderReleased: Boolean read FSliderReleased;
end;
{ TQtScrollBar }
TQtScrollBar = class(TQtAbstractSlider)
protected
function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
public
procedure AttachEvents; override;
end;
{ TQtToolBar }
TQtToolBar = class(TQtWidget)
@ -413,15 +441,24 @@ type
{ TQtTextEdit }
TQtTextEdit = class(TQtWidget)
TQtTextEdit = class(TQtAbstractScrollArea)
private
FTextChangedHook: QTextEdit_hookH;
protected
function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
public
FList: TStrings;
procedure SetColor(const Value: PQColor); override;
procedure SetAlignment(const AAlignment: TAlignment);
procedure append(AStr: WideString);
function getPlainText: WideString;
function getSelectionStart: Integer;
function getSelectionEnd: Integer;
procedure setAlignment(const AAlignment: TAlignment);
procedure setColor(const Value: PQColor); override;
procedure setLineWrapMode(const AMode: QTextEditLineWrapMode);
procedure setPlainText(const AText: WideString);
procedure setReadOnly(const AReadOnly: Boolean);
procedure setSelection(const AStart, ALength: Integer);
procedure setTabChangesFocus(const AValue: Boolean);
public
procedure AttachEvents; override;
procedure DetachEvents; override;
@ -539,34 +576,6 @@ type
procedure SignalValueChanged(p1: Integer); cdecl;
end;
{ TQtAbstractScrollArea }
TQtAbstractScrollArea = class(TQtFrame)
private
FCornerWidget: TQtWidget;
FViewPortWidget: TQtWidget;
FHScrollbar: TQtScrollBar;
FVScrollbar: TQtScrollbar;
protected
function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
public
destructor Destroy; override;
public
function cornerWidget: TQtWidget;
function horizontalScrollBar: TQtScrollBar;
function verticalScrollBar: TQtScrollBar;
function viewport: TQtWidget;
function getClientBounds: TRect; override;
procedure SetColor(const Value: PQColor); override;
procedure setCornerWidget(AWidget: TQtWidget);
procedure setHorizontalScrollBar(AScrollBar: TQtScrollBar);
procedure setScrollStyle(AScrollStyle: TScrollStyle);
procedure setTextColor(const Value: PQColor); override;
procedure setVerticalScrollBar(AScrollBar: TQtScrollBar);
procedure setVisible(visible: Boolean); override;
procedure viewportNeeded;
end;
{ TQtAbstractItemView }
TQtAbstractItemView = class(TQtAbstractScrollArea)
@ -1160,7 +1169,7 @@ begin
QEventKeyRelease:
begin
SlotKey(Event);
Result := Self is TQtAbstractScrollArea;
Result := LCLObject is TCustomControl;
end;
QEventLeave: SlotMouseEnter(Event);
@ -3929,6 +3938,36 @@ begin
QTextEdit_setLineWrapMode(QTextEditH(Result),QTextEditNoWrap);
end;
procedure TQtTextEdit.append(AStr: WideString);
begin
QTextEdit_append(QTextEditH(Widget), @AStr);
end;
function TQtTextEdit.getPlainText: WideString;
begin
QTextEdit_toPlainText(QTextEditH(Widget), @Result);
end;
function TQtTextEdit.getSelectionStart: Integer;
var
TextCursor: QTextCursorH;
begin
TextCursor := QTextCursor_create();
QTextEdit_textCursor(QTextEditH(Widget), TextCursor);
Result := QTextCursor_selectionStart(TextCursor);
QTextCursor_destroy(TextCursor);
end;
function TQtTextEdit.getSelectionEnd: Integer;
var
TextCursor: QTextCursorH;
begin
TextCursor := QTextCursor_create();
QTextEdit_textCursor(QTextEditH(Widget), TextCursor);
Result := QTextCursor_selectionEnd(TextCursor);
QTextCursor_destroy(TextCursor);
end;
{------------------------------------------------------------------------------
Function: TQtTextEdit.SetColor
Params: QColorH
@ -3949,6 +3988,39 @@ begin
end;
end;
procedure TQtTextEdit.setLineWrapMode(const AMode: QTextEditLineWrapMode);
begin
QTextEdit_setLineWrapMode(QTextEditH(Widget), AMode);
end;
procedure TQtTextEdit.setPlainText(const AText: WideString);
begin
QTextEdit_setPlainText(QTextEditH(Widget), @AText);
end;
procedure TQtTextEdit.setReadOnly(const AReadOnly: Boolean);
begin
QTextEdit_setReadOnly(QTextEditH(Widget), AReadOnly);
end;
procedure TQtTextEdit.setSelection(const AStart, ALength: Integer);
var
TextCursor: QTextCursorH;
begin
TextCursor := QTextCursor_create();
QTextEdit_textCursor(QTextEditH(Widget), TextCursor);
QTextCursor_clearSelection(TextCursor);
QTextCursor_setPosition(TextCursor, AStart);
QTextCursor_setPosition(TextCursor, AStart + ALength, QTextCursorKeepAnchor);
QTextEdit_setTextCursor(QTextEditH(Widget), TextCursor);
QTextCursor_destroy(TextCursor);
end;
procedure TQtTextEdit.setTabChangesFocus(const AValue: Boolean);
begin
QTextEdit_setTabChangesFocus(QTextEditH(Widget), AValue);
end;
procedure TQtTextEdit.SetAlignment(const AAlignment: TAlignment);
var
TextCursor: QTextCursorH;

View File

@ -84,10 +84,10 @@ type
class function CreateHandle(const AWinControl: TWinControl;
const AParams: TCreateParams): TLCLIntfHandle; override;
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 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 SetArrowKeysTraverseList(const ACustomComboBox: TCustomComboBox;
NewTraverseList: boolean); override;
@ -99,7 +99,7 @@ type
class procedure SetStyle(const ACustomComboBox: TCustomComboBox; NewStyle: TComboBoxStyle); override;
class function GetItems(const ACustomComboBox: TCustomComboBox): TStrings; override;
class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; override;
class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; override;
class procedure SetReadOnly(const ACustomComboBox: TCustomComboBox; NewReadOnly: boolean); override;
class procedure SetText(const AWinControl: TWinControl; const AText: string); override;
class procedure Sort(const ACustomComboBox: TCustomComboBox; AList: TStrings; IsSorted: boolean); override;
@ -184,23 +184,19 @@ type
class procedure SetAlignment(const ACustomMemo: TCustomMemo; const AAlignment: TAlignment); override;
class function GetStrings(const ACustomMemo: TCustomMemo): TStrings; override;
class procedure SetMaxLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
// class procedure SetScrollbars(const ACustomMemo: TCustomMemo; const NewScrollbars: TScrollStyle); virtual;
class procedure SetScrollbars(const ACustomMemo: TCustomMemo; const NewScrollbars: TScrollStyle); override;
class procedure SetWantTabs(const ACustomMemo: TCustomMemo; const NewWantTabs: boolean); override;
class procedure SetWordWrap(const ACustomMemo: TCustomMemo; const NewWordWrap: boolean); override;
public
class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; override;
class procedure SetText(const AWinControl: TWinControl; const AText: string); override;
{ class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override;
class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override;
class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override;
class procedure SetCharCase(const ACustomEdit: TCustomEdit; NewCase: TEditCharCase); override;
class procedure SetEchoMode(const ACustomEdit: TCustomEdit; NewMode: TEchoMode); override;
class procedure SetPasswordChar(const ACustomEdit: TCustomEdit; NewChar: char); override;
} class procedure SetReadOnly(const ACustomEdit: TCustomEdit; NewReadOnly: boolean); override;
{ class procedure SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); override;
class procedure SetReadOnly(const ACustomEdit: TCustomEdit; NewReadOnly: boolean); override;
class procedure SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); override;
class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override;}
//class procedure GetPreferredSize(const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer); override;
end;
{ TQtWSEdit }
@ -660,7 +656,7 @@ end;
class procedure TQtWSCustomListBox.SetTopIndex(const ACustomListBox: TCustomListBox;
const NewTopIndex: integer);
begin
{$note implement}
end;
{ TQtWSCustomMemo }
@ -680,7 +676,9 @@ begin
// create our FList helper
QtTextEdit.FList := TQtMemoStrings.Create(QTextEditH(QtTextEdit.Widget), TCustomMemo(AWinControl));
QtTextEdit.setScrollStyle(TCustomMemo(AWinControl).ScrollBars);
QtTextEdit.setTabChangesFocus(not TCustomMemo(AWinControl).WantTabs);
Result := THandle(QtTextEdit);
end;
@ -691,18 +689,18 @@ end;
------------------------------------------------------------------------------}
class procedure TQtWSCustomMemo.AppendText(const ACustomMemo: TCustomMemo; const AText: string);
var
Astr: WideString;
AStr: WideString;
begin
if Length(AText) = 0 then
exit;
Astr := UTF8Decode(AText);
QTextEdit_append(QTextEditH(TQtWidget(ACustomMemo.Handle).Widget),@Astr);
AStr := GetUtf8String(AText);
TQtTextEdit(ACustomMemo.Handle).append(AStr);
end;
class procedure TQtWSCustomMemo.SetAlignment(const ACustomMemo: TCustomMemo;
const AAlignment: TAlignment);
begin
TQtTextEdit(ACustomMemo.Handle).SetAlignment(ACustomMemo.Alignment);
TQtTextEdit(ACustomMemo.Handle).setAlignment(ACustomMemo.Alignment);
end;
@ -718,7 +716,7 @@ begin
if not Assigned(TQtTextEdit(ACustomMemo.Handle).FList) then
begin
TextEditH := QTextEditH((TQtTextEdit(ACustomMemo.Handle).Widget)); // set to proper type
TQtTextEdit(ACustomMemo.Handle).FList := TQtMemoStrings.Create(TextEditH,ACustomMemo);
TQtTextEdit(ACustomMemo.Handle).FList := TQtMemoStrings.Create(TextEditH, ACustomMemo);
end;
Result := TQtTextEdit(ACustomMemo.Handle).FList;
@ -734,20 +732,35 @@ begin
{qt QTextEdit doesn't have such property !}
end;
class procedure TQtWSCustomMemo.SetScrollbars(const ACustomMemo: TCustomMemo;
const NewScrollbars: TScrollStyle);
begin
if not WSCheckHandleAllocated(ACustomMemo, 'SetScrollBars') then
Exit;
TQtTextEdit(ACustomMemo.Handle).setScrollStyle(NewScrollBars);
end;
class procedure TQtWSCustomMemo.SetWantTabs(const ACustomMemo: TCustomMemo;
const NewWantTabs: boolean);
begin
TQtTextEdit(ACustomMemo.Handle).setTabChangesFocus(not NewWantTabs);
end;
{------------------------------------------------------------------------------
Method: TQtWSCustomMemo.SetWordWrap
Params: NewWordWrap boolean
Returns: Nothing
------------------------------------------------------------------------------}
class procedure TQtWSCustomMemo.SetWordWrap(const ACustomMemo: TCustomMemo; const NewWordWrap: boolean);
var
TextEditH: QTextEditH;
const
WordWrapMap: array[Boolean] of QTextEditLineWrapMode =
(
QTextEditNoWrap,
QTextEditWidgetWidth
);
begin
TextEditH := QTextEditH((TQtWidget(ACustomMemo.Handle).Widget)); // set to proper type
if NewWordWrap then
QTextEdit_setLineWrapMode(TextEditH,QTextEditWidgetWidth)
else
QTextEdit_setLineWrapMode(TextEditH,QTextEditNoWrap);
TQtTextEdit(ACustomMemo.Handle).setLineWrapMode(WordWrapMap[NewWordWrap]);
end;
{------------------------------------------------------------------------------
@ -759,7 +772,7 @@ class function TQtWSCustomMemo.GetText(const AWinControl: TWinControl; var AText
var
Str: WideString;
begin
QTextEdit_toPlainText(QTextEditH(TQtWidget(AWinControl.Handle).Widget), @Str);
Str := TQtTextEdit(AWinControl.Handle).getPlainText;
AText := UTF8Encode(Str);
@ -772,11 +785,20 @@ end;
Returns: Nothing
------------------------------------------------------------------------------}
class procedure TQtWSCustomMemo.SetText(const AWinControl: TWinControl; const AText: string);
var
AString: WideString;
begin
AString := UTF8Decode(AText);
QTextEdit_setPlainText(QTextEditH(TQtWidget(AWinControl.Handle).Widget), @AString);
TQtTextEdit(AWinControl.Handle).setPlainText(GetUtf8String(AText));
end;
class function TQtWSCustomMemo.GetSelStart(const ACustomEdit: TCustomEdit): integer;
begin
Result := TQtTextEdit(ACustomEdit.Handle).getSelectionStart;
end;
class function TQtWSCustomMemo.GetSelLength(const ACustomEdit: TCustomEdit): integer;
begin
Result :=
TQtTextEdit(ACustomEdit.Handle).getSelectionEnd -
TQtTextEdit(ACustomEdit.Handle).getSelectionStart;
end;
{------------------------------------------------------------------------------
@ -785,11 +807,20 @@ end;
Returns: Nothing
------------------------------------------------------------------------------}
class procedure TQtWSCustomMemo.SetReadOnly(const ACustomEdit: TCustomEdit; NewReadOnly: boolean);
var
TextEditH: QTextEditH;
begin
TextEditH := QTextEditH((TQtWidget(ACustomEdit.Handle).Widget)); // set to proper type
QTextEdit_setReadOnly(TextEditH,NewReadOnly);
TQtTextEdit(ACustomEdit.Handle).setReadOnly(NewReadOnly);
end;
class procedure TQtWSCustomMemo.SetSelStart(const ACustomEdit: TCustomEdit;
NewStart: integer);
begin
TQtTextEdit(ACustomEdit.Handle).setSelection(NewStart, GetSelLength(ACustomEdit));
end;
class procedure TQtWSCustomMemo.SetSelLength(const ACustomEdit: TCustomEdit;
NewLength: integer);
begin
TQtTextEdit(ACustomEdit.Handle).setSelection(GetSelStart(ACustomEdit), NewLength);
end;
{ TQtWSCustomEdit }
@ -1416,7 +1447,7 @@ end;
class procedure TQtWSCustomComboBox.SetArrowKeysTraverseList(
const ACustomComboBox: TCustomComboBox; NewTraverseList: boolean);
begin
// TODO: implement me ???
{$note implement}
end;
class procedure TQtWSCustomComboBox.SetDropDownCount(