Very large patch from Jesus Reyes. Among other things it updates qt bindings to 1.24, fixes the font color problem, implements SetBkColor, SetBkMode and makes TStringGrid almost work.

git-svn-id: trunk@10496 -
This commit is contained in:
sekelsenmat 2007-01-23 00:51:41 +00:00
parent 1f429be860
commit 637112c8b5
11 changed files with 1497 additions and 534 deletions

View File

@ -43,6 +43,6 @@ initialization
finalization
WidgetSet.Free;
FreeWidgetset;
end.
end.

View File

@ -1,6 +1,6 @@
unit qt4;
{ Version : 1.21 }
{ Version : 1.24 }
{$ifdef fpc}
{$mode delphi}
@ -26,6 +26,13 @@ const
type
{$ifndef fpc}
PPtrInt = ^PtrInt;
PtrInt = longint; // 32bit dcc
qword = type int64;
{$endif}
QHookH = TMethod;
PSizePolicy = ^TSizePolicy;
TSizePolicy = packed record
@ -44,7 +51,8 @@ type
qreal = double;
qrgb = longword;
TCoreApplicationEventFilter = procedure(Msg:PChar;Res:PLongInt) cdecl;
TCoreApplicationEventFilter = function(Msg:PChar;Res:PLongInt):boolean cdecl;
TAbstractEventFilter = function(Msg:PChar):boolean cdecl;
PIntArray = ^TIntArray;
@ -166,6 +174,7 @@ QMatrixH = class(TObject) end;
QMimeSourceH = class(TObject) end;
QModelIndexH = class(TObject) end;
QObjectH = class(TObject) end;
QAbstractEventDispatcherH = class(QObjectH) end;
QAbstractItemDelegateH = class(QObjectH) end;
QAbstractItemModelH = class(QObjectH) end;
QAbstractTextDocumentLayoutH = class(QObjectH) end;
@ -182,6 +191,7 @@ QObjectH = class(TObject) end;
QMimeDataH = class(QObjectH) end;
QMovieH = class(QObjectH) end;
QSessionManagerH = class(QObjectH) end;
QSocketNotifierH = class(QObjectH) end;
QStyleH = class(QObjectH) end;
QTextDocumentH = class(QObjectH) end;
QTextObjectH = class(QObjectH) end;
@ -1144,7 +1154,7 @@ procedure QObject_removeEventFilter(handle: QObjectH; p1: QObjectH); cdecl; exte
function QObject_connect(sender: QObjectH; signal: PAnsiChar; receiver: QObjectH; member: PAnsiChar; p5: QtConnectionType = QtAutoConnection): Boolean; overload; cdecl; external QtIntf name 'QObject_connect';
function QObject_connect(handle: QObjectH; sender: QObjectH; signal: PAnsiChar; member: PAnsiChar; _type: QtConnectionType = QtAutoConnection): Boolean; overload; cdecl; external QtIntf name 'QObject_connect2';
function QObject_disconnect(sender: QObjectH; signal: PAnsiChar; receiver: QObjectH; member: PAnsiChar): Boolean; overload; cdecl; external QtIntf name 'QObject_disconnect';
function QObject_disconnect(handle: QObjectH; receiver: QObjectH; member: PAnsiChar = 0): Boolean; overload; cdecl; external QtIntf name 'QObject_disconnect3';
function QObject_disconnect(handle: QObjectH; receiver: QObjectH; member: PAnsiChar = nil): Boolean; overload; cdecl; external QtIntf name 'QObject_disconnect3';
procedure QObject_dumpObjectTree(handle: QObjectH); cdecl; external QtIntf name 'QObject_dumpObjectTree';
procedure QObject_dumpObjectInfo(handle: QObjectH); cdecl; external QtIntf name 'QObject_dumpObjectInfo';
function QObject_setProperty(handle: QObjectH; name: PAnsiChar; value: QVariantH): Boolean; cdecl; external QtIntf name 'QObject_setProperty';
@ -1346,7 +1356,7 @@ procedure QCoreApplication_addLibraryPath(p1: PWideString); cdecl; external QtIn
procedure QCoreApplication_removeLibraryPath(p1: PWideString); cdecl; external QtIntf name 'QCoreApplication_removeLibraryPath';
procedure QCoreApplication_installTranslator(messageFile: QTranslatorH); cdecl; external QtIntf name 'QCoreApplication_installTranslator';
procedure QCoreApplication_removeTranslator(messageFile: QTranslatorH); cdecl; external QtIntf name 'QCoreApplication_removeTranslator';
procedure QCoreApplication_translate(retval: PWideString; context: PAnsiChar; key: PAnsiChar; comment: PAnsiChar = 0; encoding: QCoreApplicationEncoding = QCoreApplicationDefaultCodec); cdecl; external QtIntf name 'QCoreApplication_translate';
procedure QCoreApplication_translate(retval: PWideString; context: PAnsiChar; key: PAnsiChar; comment: PAnsiChar = nil; encoding: QCoreApplicationEncoding = QCoreApplicationDefaultCodec); cdecl; external QtIntf name 'QCoreApplication_translate';
procedure QCoreApplication_flush(); cdecl; external QtIntf name 'QCoreApplication_flush';
{$ifdef DARWIN or LINUX }
procedure QCoreApplication_watchUnixSignal(signal: Integer; watch: Boolean); cdecl; external QtIntf name 'QCoreApplication_watchUnixSignal';
@ -1366,7 +1376,7 @@ type
function QTranslator_create(parent: QObjectH = nil): QTranslatorH; cdecl; external QtIntf name 'QTranslator_create';
procedure QTranslator_destroy(handle: QTranslatorH); cdecl; external QtIntf name 'QTranslator_destroy';
procedure QTranslator_translate(handle: QTranslatorH; retval: PWideString; context: PAnsiChar; sourceText: PAnsiChar; comment: PAnsiChar = 0); cdecl; external QtIntf name 'QTranslator_translate';
procedure QTranslator_translate(handle: QTranslatorH; retval: PWideString; context: PAnsiChar; sourceText: PAnsiChar; comment: PAnsiChar = nil); cdecl; external QtIntf name 'QTranslator_translate';
function QTranslator_isEmpty(handle: QTranslatorH): Boolean; cdecl; external QtIntf name 'QTranslator_isEmpty';
function QTranslator_load(handle: QTranslatorH; filename: PWideString; directory: PWideString = nil; search_delimiters: PWideString = nil; suffix: PWideString = nil): Boolean; overload; cdecl; external QtIntf name 'QTranslator_load';
function QTranslator_load(handle: QTranslatorH; data: PByte; len: Integer): Boolean; overload; cdecl; external QtIntf name 'QTranslator_load2';
@ -1482,12 +1492,12 @@ function QVariant_isNull(handle: QVariantH): Boolean; cdecl; external QtIntf nam
procedure QVariant_clear(handle: QVariantH); cdecl; external QtIntf name 'QVariant_clear';
procedure QVariant_detach(handle: QVariantH); cdecl; external QtIntf name 'QVariant_detach';
function QVariant_isDetached(handle: QVariantH): Boolean; cdecl; external QtIntf name 'QVariant_isDetached';
function QVariant_toInt(handle: QVariantH; ok: PBoolean = 0): Integer; cdecl; external QtIntf name 'QVariant_toInt';
function QVariant_toUInt(handle: QVariantH; ok: PBoolean = 0): Cardinal; cdecl; external QtIntf name 'QVariant_toUInt';
function QVariant_toLongLong(handle: QVariantH; ok: PBoolean = 0): int64; cdecl; external QtIntf name 'QVariant_toLongLong';
function QVariant_toULongLong(handle: QVariantH; ok: PBoolean = 0): qword; cdecl; external QtIntf name 'QVariant_toULongLong';
function QVariant_toInt(handle: QVariantH; ok: PBoolean = nil): Integer; cdecl; external QtIntf name 'QVariant_toInt';
function QVariant_toUInt(handle: QVariantH; ok: PBoolean = nil): Cardinal; cdecl; external QtIntf name 'QVariant_toUInt';
function QVariant_toLongLong(handle: QVariantH; ok: PBoolean = nil): int64; cdecl; external QtIntf name 'QVariant_toLongLong';
function QVariant_toULongLong(handle: QVariantH; ok: PBoolean = nil): qword; cdecl; external QtIntf name 'QVariant_toULongLong';
function QVariant_toBool(handle: QVariantH): Boolean; cdecl; external QtIntf name 'QVariant_toBool';
function QVariant_toDouble(handle: QVariantH; ok: PBoolean = 0): Double; cdecl; external QtIntf name 'QVariant_toDouble';
function QVariant_toDouble(handle: QVariantH; ok: PBoolean = nil): Double; cdecl; external QtIntf name 'QVariant_toDouble';
procedure QVariant_toByteArray(handle: QVariantH; retval: QByteArrayH); cdecl; external QtIntf name 'QVariant_toByteArray';
procedure QVariant_toBitArray(handle: QVariantH; retval: QBitArrayH); cdecl; external QtIntf name 'QVariant_toBitArray';
procedure QVariant_toString(handle: QVariantH; retval: PWideString); cdecl; external QtIntf name 'QVariant_toString';
@ -1513,6 +1523,23 @@ function QVariant_typeToName(_type: QVariantType): PAnsiChar; cdecl; external Qt
function QVariant_nameToType(name: PAnsiChar): QVariantType; cdecl; external QtIntf name 'QVariant_nameToType';
function QVariant_constData(handle: QVariantH): Pointer; cdecl; external QtIntf name 'QVariant_constData';
function QAbstractEventDispatcher_instance(thread: QThreadH = nil): QAbstractEventDispatcherH; cdecl; external QtIntf name 'QAbstractEventDispatcher_instance';
function QAbstractEventDispatcher_processEvents(handle: QAbstractEventDispatcherH; flags: QEventLoopProcessEventsFlags): Boolean; cdecl; external QtIntf name 'QAbstractEventDispatcher_processEvents';
function QAbstractEventDispatcher_hasPendingEvents(handle: QAbstractEventDispatcherH): Boolean; cdecl; external QtIntf name 'QAbstractEventDispatcher_hasPendingEvents';
procedure QAbstractEventDispatcher_registerSocketNotifier(handle: QAbstractEventDispatcherH; notifier: QSocketNotifierH); cdecl; external QtIntf name 'QAbstractEventDispatcher_registerSocketNotifier';
procedure QAbstractEventDispatcher_unregisterSocketNotifier(handle: QAbstractEventDispatcherH; notifier: QSocketNotifierH); cdecl; external QtIntf name 'QAbstractEventDispatcher_unregisterSocketNotifier';
function QAbstractEventDispatcher_registerTimer(handle: QAbstractEventDispatcherH; interval: Integer; _object: QObjectH): Integer; overload; cdecl; external QtIntf name 'QAbstractEventDispatcher_registerTimer';
procedure QAbstractEventDispatcher_registerTimer(handle: QAbstractEventDispatcherH; timerId: Integer; interval: Integer; _object: QObjectH); overload; cdecl; external QtIntf name 'QAbstractEventDispatcher_registerTimer2';
function QAbstractEventDispatcher_unregisterTimer(handle: QAbstractEventDispatcherH; timerId: Integer): Boolean; cdecl; external QtIntf name 'QAbstractEventDispatcher_unregisterTimer';
function QAbstractEventDispatcher_unregisterTimers(handle: QAbstractEventDispatcherH; _object: QObjectH): Boolean; cdecl; external QtIntf name 'QAbstractEventDispatcher_unregisterTimers';
procedure QAbstractEventDispatcher_wakeUp(handle: QAbstractEventDispatcherH); cdecl; external QtIntf name 'QAbstractEventDispatcher_wakeUp';
procedure QAbstractEventDispatcher_interrupt(handle: QAbstractEventDispatcherH); cdecl; external QtIntf name 'QAbstractEventDispatcher_interrupt';
procedure QAbstractEventDispatcher_flush(handle: QAbstractEventDispatcherH); cdecl; external QtIntf name 'QAbstractEventDispatcher_flush';
procedure QAbstractEventDispatcher_startingUp(handle: QAbstractEventDispatcherH); cdecl; external QtIntf name 'QAbstractEventDispatcher_startingUp';
procedure QAbstractEventDispatcher_closingDown(handle: QAbstractEventDispatcherH); cdecl; external QtIntf name 'QAbstractEventDispatcher_closingDown';
function QAbstractEventDispatcher_setEventFilter(handle: QAbstractEventDispatcherH; filter: TAbstractEventFilter): TAbstractEventFilter; cdecl; external QtIntf name 'QAbstractEventDispatcher_setEventFilter';
function QAbstractEventDispatcher_filterEvent(handle: QAbstractEventDispatcherH; message: Pointer): Boolean; cdecl; external QtIntf name 'QAbstractEventDispatcher_filterEvent';
function QStringList_create(): QStringListH; overload; cdecl; external QtIntf name 'QStringList_create';
procedure QStringList_destroy(handle: QStringListH); cdecl; external QtIntf name 'QStringList_destroy';
function QStringList_create(i: PWideString): QStringListH; overload; cdecl; external QtIntf name 'QStringList_create2';
@ -1687,9 +1714,9 @@ procedure QApplication_restoreOverrideCursor(); cdecl; external QtIntf name 'QAp
procedure QApplication_palette(retval: QPaletteH); overload; cdecl; external QtIntf name 'QApplication_palette';
procedure QApplication_palette(retval: QPaletteH; p1: QWidgetH); overload; cdecl; external QtIntf name 'QApplication_palette2';
procedure QApplication_palette(retval: QPaletteH; className: PAnsiChar); overload; cdecl; external QtIntf name 'QApplication_palette3';
procedure QApplication_setPalette(p1: QPaletteH; className: PAnsiChar = 0); cdecl; external QtIntf name 'QApplication_setPalette';
procedure QApplication_setPalette(p1: QPaletteH; className: PAnsiChar = nil); cdecl; external QtIntf name 'QApplication_setPalette';
procedure QApplication_font(retval: QFontH; p1: QWidgetH = nil); cdecl; external QtIntf name 'QApplication_font';
procedure QApplication_setFont(p1: QFontH; className: PAnsiChar = 0); cdecl; external QtIntf name 'QApplication_setFont';
procedure QApplication_setFont(p1: QFontH; className: PAnsiChar = nil); cdecl; external QtIntf name 'QApplication_setFont';
procedure QApplication_fontMetrics(retval: QFontMetricsH); cdecl; external QtIntf name 'QApplication_fontMetrics';
procedure QApplication_setWindowIcon(icon: QIconH); cdecl; external QtIntf name 'QApplication_setWindowIcon';
procedure QApplication_windowIcon(retval: QIconH); cdecl; external QtIntf name 'QApplication_windowIcon';
@ -2662,9 +2689,9 @@ function QColor_blueF(handle: QColorH): Double; cdecl; external QtIntf name 'QCo
procedure QColor_setRedF(handle: QColorH; red: Double); cdecl; external QtIntf name 'QColor_setRedF';
procedure QColor_setGreenF(handle: QColorH; green: Double); cdecl; external QtIntf name 'QColor_setGreenF';
procedure QColor_setBlueF(handle: QColorH; blue: Double); cdecl; external QtIntf name 'QColor_setBlueF';
procedure QColor_getRgb(handle: QColorH; r: PInteger; g: PInteger; b: PInteger; a: PInteger = 0); cdecl; external QtIntf name 'QColor_getRgb';
procedure QColor_getRgb(handle: QColorH; r: PInteger; g: PInteger; b: PInteger; a: PInteger = nil); cdecl; external QtIntf name 'QColor_getRgb';
procedure QColor_setRgb(handle: QColorH; r: Integer; g: Integer; b: Integer; a: Integer = 255); overload; cdecl; external QtIntf name 'QColor_setRgb';
procedure QColor_getRgbF(handle: QColorH; r: PDouble; g: PDouble; b: PDouble; a: PDouble = 0); cdecl; external QtIntf name 'QColor_getRgbF';
procedure QColor_getRgbF(handle: QColorH; r: PDouble; g: PDouble; b: PDouble; a: PDouble = nil); cdecl; external QtIntf name 'QColor_getRgbF';
procedure QColor_setRgbF(handle: QColorH; r: Double; g: Double; b: Double; a: Double = 1.0); cdecl; external QtIntf name 'QColor_setRgbF';
function QColor_rgba(handle: QColorH): QRgb; cdecl; external QtIntf name 'QColor_rgba';
procedure QColor_setRgba(handle: QColorH; rgba: QRgb); cdecl; external QtIntf name 'QColor_setRgba';
@ -2676,9 +2703,9 @@ function QColor_value(handle: QColorH): Integer; cdecl; external QtIntf name 'QC
function QColor_hueF(handle: QColorH): Double; cdecl; external QtIntf name 'QColor_hueF';
function QColor_saturationF(handle: QColorH): Double; cdecl; external QtIntf name 'QColor_saturationF';
function QColor_valueF(handle: QColorH): Double; cdecl; external QtIntf name 'QColor_valueF';
procedure QColor_getHsv(handle: QColorH; h: PInteger; s: PInteger; v: PInteger; a: PInteger = 0); cdecl; external QtIntf name 'QColor_getHsv';
procedure QColor_getHsv(handle: QColorH; h: PInteger; s: PInteger; v: PInteger; a: PInteger = nil); cdecl; external QtIntf name 'QColor_getHsv';
procedure QColor_setHsv(handle: QColorH; h: Integer; s: Integer; v: Integer; a: Integer = 255); cdecl; external QtIntf name 'QColor_setHsv';
procedure QColor_getHsvF(handle: QColorH; h: PDouble; s: PDouble; v: PDouble; a: PDouble = 0); cdecl; external QtIntf name 'QColor_getHsvF';
procedure QColor_getHsvF(handle: QColorH; h: PDouble; s: PDouble; v: PDouble; a: PDouble = nil); cdecl; external QtIntf name 'QColor_getHsvF';
procedure QColor_setHsvF(handle: QColorH; h: Double; s: Double; v: Double; a: Double = 1.0); cdecl; external QtIntf name 'QColor_setHsvF';
function QColor_cyan(handle: QColorH): Integer; cdecl; external QtIntf name 'QColor_cyan';
function QColor_magenta(handle: QColorH): Integer; cdecl; external QtIntf name 'QColor_magenta';
@ -2688,9 +2715,9 @@ function QColor_cyanF(handle: QColorH): Double; cdecl; external QtIntf name 'QCo
function QColor_magentaF(handle: QColorH): Double; cdecl; external QtIntf name 'QColor_magentaF';
function QColor_yellowF(handle: QColorH): Double; cdecl; external QtIntf name 'QColor_yellowF';
function QColor_blackF(handle: QColorH): Double; cdecl; external QtIntf name 'QColor_blackF';
procedure QColor_getCmyk(handle: QColorH; c: PInteger; m: PInteger; y: PInteger; k: PInteger; a: PInteger = 0); cdecl; external QtIntf name 'QColor_getCmyk';
procedure QColor_getCmyk(handle: QColorH; c: PInteger; m: PInteger; y: PInteger; k: PInteger; a: PInteger = nil); cdecl; external QtIntf name 'QColor_getCmyk';
procedure QColor_setCmyk(handle: QColorH; c: Integer; m: Integer; y: Integer; k: Integer; a: Integer = 255); cdecl; external QtIntf name 'QColor_setCmyk';
procedure QColor_getCmykF(handle: QColorH; c: PDouble; m: PDouble; y: PDouble; k: PDouble; a: PDouble = 0); cdecl; external QtIntf name 'QColor_getCmykF';
procedure QColor_getCmykF(handle: QColorH; c: PDouble; m: PDouble; y: PDouble; k: PDouble; a: PDouble = nil); cdecl; external QtIntf name 'QColor_getCmykF';
procedure QColor_setCmykF(handle: QColorH; c: Double; m: Double; y: Double; k: Double; a: Double = 1.0); cdecl; external QtIntf name 'QColor_setCmykF';
procedure QColor_toRgb(handle: QColorH; retval: PQColor); cdecl; external QtIntf name 'QColor_toRgb';
procedure QColor_toHsv(handle: QColorH; retval: PQColor); cdecl; external QtIntf name 'QColor_toHsv';
@ -2739,7 +2766,7 @@ function QMatrix_shear(handle: QMatrixH; sh: Double; sv: Double): QMatrixH; cdec
function QMatrix_rotate(handle: QMatrixH; a: Double): QMatrixH; cdecl; external QtIntf name 'QMatrix_rotate';
function QMatrix_isInvertible(handle: QMatrixH): Boolean; cdecl; external QtIntf name 'QMatrix_isInvertible';
function QMatrix_det(handle: QMatrixH): Double; cdecl; external QtIntf name 'QMatrix_det';
procedure QMatrix_inverted(handle: QMatrixH; retval: QMatrixH; invertible: PBoolean = 0); cdecl; external QtIntf name 'QMatrix_inverted';
procedure QMatrix_inverted(handle: QMatrixH; retval: QMatrixH; invertible: PBoolean = nil); cdecl; external QtIntf name 'QMatrix_inverted';
type
@ -3007,8 +3034,8 @@ procedure QPainter_drawText(handle: QPainterH; p: QPointFH; s: PWideString); ove
procedure QPainter_drawText(handle: QPainterH; p: PPoint; s: PWideString); overload; cdecl; external QtIntf name 'QPainter_drawText2';
procedure QPainter_drawText(handle: QPainterH; x: Integer; y: Integer; s: PWideString); overload; cdecl; external QtIntf name 'QPainter_drawText3';
procedure QPainter_drawText(handle: QPainterH; r: QRectFH; flags: Integer; text: PWideString; br: QRectFH = nil); overload; cdecl; external QtIntf name 'QPainter_drawText4';
procedure QPainter_drawText(handle: QPainterH; r: PRect; flags: Integer; text: PWideString; br: PRect); overload; cdecl; external QtIntf name 'QPainter_drawText5';
procedure QPainter_drawText(handle: QPainterH; x: Integer; y: Integer; w: Integer; h: Integer; flags: Integer; text: PWideString; br: PRect); overload; cdecl; external QtIntf name 'QPainter_drawText6';
procedure QPainter_drawText(handle: QPainterH; r: PRect; flags: Integer; text: PWideString; br: PRect = nil); overload; cdecl; external QtIntf name 'QPainter_drawText5';
procedure QPainter_drawText(handle: QPainterH; x: Integer; y: Integer; w: Integer; h: Integer; flags: Integer; text: PWideString; br: PRect = nil); overload; cdecl; external QtIntf name 'QPainter_drawText6';
procedure QPainter_drawText(handle: QPainterH; r: QRectFH; text: PWideString; o: QTextOptionH = nil); overload; cdecl; external QtIntf name 'QPainter_drawText7';
procedure QPainter_boundingRect(handle: QPainterH; retval: QRectFH; rect: QRectFH; flags: Integer; text: PWideString); overload; cdecl; external QtIntf name 'QPainter_boundingRect';
procedure QPainter_boundingRect(handle: QPainterH; retval: PRect; rect: PRect; flags: Integer; text: PWideString); overload; cdecl; external QtIntf name 'QPainter_boundingRect2';
@ -3024,7 +3051,7 @@ procedure QPainter_setRenderHint(handle: QPainterH; hint: QPainterRenderHint; _o
function QPainter_renderHints(handle: QPainterH): QPainterRenderHints; cdecl; external QtIntf name 'QPainter_renderHints';
function QPainter_paintEngine(handle: QPainterH): QPaintEngineH; cdecl; external QtIntf name 'QPainter_paintEngine';
procedure QPainter_setRedirected(device: QPaintDeviceH; replacement: QPaintDeviceH; offset: PPoint = nil); cdecl; external QtIntf name 'QPainter_setRedirected';
function QPainter_redirected(device: QPaintDeviceH; offset: PPoint = 0): QPaintDeviceH; cdecl; external QtIntf name 'QPainter_redirected';
function QPainter_redirected(device: QPaintDeviceH; offset: PPoint = nil): QPaintDeviceH; cdecl; external QtIntf name 'QPainter_redirected';
procedure QPainter_restoreRedirected(device: QPaintDeviceH); cdecl; external QtIntf name 'QPainter_restoreRedirected';
@ -3515,9 +3542,9 @@ function QFontMetrics_width(handle: QFontMetricsH; p1: PWideChar): Integer; over
function QFontMetrics_charWidth(handle: QFontMetricsH; str: PWideString; pos: Integer): Integer; cdecl; external QtIntf name 'QFontMetrics_charWidth';
procedure QFontMetrics_boundingRect(handle: QFontMetricsH; retval: PRect; p1: PWideChar); overload; cdecl; external QtIntf name 'QFontMetrics_boundingRect';
procedure QFontMetrics_boundingRect(handle: QFontMetricsH; retval: PRect; text: PWideString); overload; cdecl; external QtIntf name 'QFontMetrics_boundingRect2';
procedure QFontMetrics_boundingRect(handle: QFontMetricsH; retval: PRect; r: PRect; flags: Integer; text: PWideString; tabstops: Integer = 0; tabarray: PInteger = 0); overload; cdecl; external QtIntf name 'QFontMetrics_boundingRect3';
procedure QFontMetrics_boundingRect(handle: QFontMetricsH; retval: PRect; x: Integer; y: Integer; w: Integer; h: Integer; flags: Integer; text: PWideString; tabstops: Integer = 0; tabarray: PInteger = 0); overload; cdecl; external QtIntf name 'QFontMetrics_boundingRect4';
procedure QFontMetrics_size(handle: QFontMetricsH; retval: PSize; flags: Integer; str: PWideString; tabstops: Integer = 0; tabarray: PInteger = 0); cdecl; external QtIntf name 'QFontMetrics_size';
procedure QFontMetrics_boundingRect(handle: QFontMetricsH; retval: PRect; r: PRect; flags: Integer; text: PWideString; tabstops: Integer = 0; tabarray: PInteger = nil); overload; cdecl; external QtIntf name 'QFontMetrics_boundingRect3';
procedure QFontMetrics_boundingRect(handle: QFontMetricsH; retval: PRect; x: Integer; y: Integer; w: Integer; h: Integer; flags: Integer; text: PWideString; tabstops: Integer = 0; tabarray: PInteger = nil); overload; cdecl; external QtIntf name 'QFontMetrics_boundingRect4';
procedure QFontMetrics_size(handle: QFontMetricsH; retval: PSize; flags: Integer; str: PWideString; tabstops: Integer = 0; tabarray: PInteger = nil); cdecl; external QtIntf name 'QFontMetrics_size';
function QFontMetrics_underlinePos(handle: QFontMetricsH): Integer; cdecl; external QtIntf name 'QFontMetrics_underlinePos';
function QFontMetrics_overlinePos(handle: QFontMetricsH): Integer; cdecl; external QtIntf name 'QFontMetrics_overlinePos';
function QFontMetrics_strikeOutPos(handle: QFontMetricsH): Integer; cdecl; external QtIntf name 'QFontMetrics_strikeOutPos';
@ -3542,8 +3569,8 @@ function QFontMetricsF_width(handle: QFontMetricsFH; _string: PWideString): Doub
function QFontMetricsF_width(handle: QFontMetricsFH; p1: PWideChar): Double; overload; cdecl; external QtIntf name 'QFontMetricsF_width2';
procedure QFontMetricsF_boundingRect(handle: QFontMetricsFH; retval: QRectFH; _string: PWideString); overload; cdecl; external QtIntf name 'QFontMetricsF_boundingRect';
procedure QFontMetricsF_boundingRect(handle: QFontMetricsFH; retval: QRectFH; p1: PWideChar); overload; cdecl; external QtIntf name 'QFontMetricsF_boundingRect2';
procedure QFontMetricsF_boundingRect(handle: QFontMetricsFH; retval: QRectFH; r: QRectFH; flags: Integer; _string: PWideString; tabstops: Integer = 0; tabarray: PInteger = 0); overload; cdecl; external QtIntf name 'QFontMetricsF_boundingRect3';
procedure QFontMetricsF_size(handle: QFontMetricsFH; retval: QSizeFH; flags: Integer; str: PWideString; tabstops: Integer = 0; tabarray: PInteger = 0); cdecl; external QtIntf name 'QFontMetricsF_size';
procedure QFontMetricsF_boundingRect(handle: QFontMetricsFH; retval: QRectFH; r: QRectFH; flags: Integer; _string: PWideString; tabstops: Integer = 0; tabarray: PInteger = nil); overload; cdecl; external QtIntf name 'QFontMetricsF_boundingRect3';
procedure QFontMetricsF_size(handle: QFontMetricsFH; retval: QSizeFH; flags: Integer; str: PWideString; tabstops: Integer = 0; tabarray: PInteger = nil); cdecl; external QtIntf name 'QFontMetricsF_size';
function QFontMetricsF_underlinePos(handle: QFontMetricsFH): Double; cdecl; external QtIntf name 'QFontMetricsF_underlinePos';
function QFontMetricsF_overlinePos(handle: QFontMetricsFH): Double; cdecl; external QtIntf name 'QFontMetricsF_overlinePos';
function QFontMetricsF_strikeOutPos(handle: QFontMetricsFH): Double; cdecl; external QtIntf name 'QFontMetricsF_strikeOutPos';
@ -3668,7 +3695,7 @@ function QPixmap_create(): QPixmapH; overload; cdecl; external QtIntf name 'QPix
procedure QPixmap_destroy(handle: QPixmapH); cdecl; external QtIntf name 'QPixmap_destroy';
function QPixmap_create(w: Integer; h: Integer): QPixmapH; overload; cdecl; external QtIntf name 'QPixmap_create2';
function QPixmap_create(p1: PSize): QPixmapH; overload; cdecl; external QtIntf name 'QPixmap_create3';
function QPixmap_create(fileName: PWideString; format: PAnsiChar = 0; flags: QtImageConversionFlags = QtAutoColor): QPixmapH; overload; cdecl; external QtIntf name 'QPixmap_create4';
function QPixmap_create(fileName: PWideString; format: PAnsiChar = nil; flags: QtImageConversionFlags = QtAutoColor): QPixmapH; overload; cdecl; external QtIntf name 'QPixmap_create4';
function QPixmap_create(xpm: PAnsiChar): QPixmapH; overload; cdecl; external QtIntf name 'QPixmap_create5';
function QPixmap_create(p1: QPixmapH): QPixmapH; overload; cdecl; external QtIntf name 'QPixmap_create6';
function QPixmap_isNull(handle: QPixmapH): Boolean; cdecl; external QtIntf name 'QPixmap_isNull';
@ -3679,7 +3706,7 @@ procedure QPixmap_size(handle: QPixmapH; retval: PSize); cdecl; external QtIntf
procedure QPixmap_rect(handle: QPixmapH; retval: PRect); cdecl; external QtIntf name 'QPixmap_rect';
function QPixmap_depth(handle: QPixmapH): Integer; cdecl; external QtIntf name 'QPixmap_depth';
function QPixmap_defaultDepth(): Integer; cdecl; external QtIntf name 'QPixmap_defaultDepth';
procedure QPixmap_fill(handle: QPixmapH; fillColor: PQColor = Qtwhite); overload; cdecl; external QtIntf name 'QPixmap_fill';
procedure QPixmap_fill(handle: QPixmapH; fillColor: PQColor); overload; cdecl; external QtIntf name 'QPixmap_fill';
procedure QPixmap_fill(handle: QPixmapH; widget: QWidgetH; ofs: PPoint); overload; cdecl; external QtIntf name 'QPixmap_fill2';
procedure QPixmap_fill(handle: QPixmapH; widget: QWidgetH; xofs: Integer; yofs: Integer); overload; cdecl; external QtIntf name 'QPixmap_fill3';
procedure QPixmap_mask(handle: QPixmapH; retval: QBitmapH); cdecl; external QtIntf name 'QPixmap_mask';
@ -3701,9 +3728,9 @@ procedure QPixmap_transformed(handle: QPixmapH; retval: QPixmapH; p1: QMatrixH;
procedure QPixmap_trueMatrix(retval: QMatrixH; m: QMatrixH; w: Integer; h: Integer); cdecl; external QtIntf name 'QPixmap_trueMatrix';
procedure QPixmap_toImage(handle: QPixmapH; retval: QImageH); cdecl; external QtIntf name 'QPixmap_toImage';
procedure QPixmap_fromImage(retval: QPixmapH; image: QImageH; flags: QtImageConversionFlags = QtAutoColor); cdecl; external QtIntf name 'QPixmap_fromImage';
function QPixmap_load(handle: QPixmapH; fileName: PWideString; format: PAnsiChar = 0; flags: QtImageConversionFlags = QtAutoColor): Boolean; cdecl; external QtIntf name 'QPixmap_load';
function QPixmap_loadFromData(handle: QPixmapH; buf: PByte; len: Cardinal; format: PAnsiChar = 0; flags: QtImageConversionFlags = QtAutoColor): Boolean; overload; cdecl; external QtIntf name 'QPixmap_loadFromData';
function QPixmap_loadFromData(handle: QPixmapH; data: QByteArrayH; format: PAnsiChar = 0; flags: QtImageConversionFlags = QtAutoColor): Boolean; overload; cdecl; external QtIntf name 'QPixmap_loadFromData2';
function QPixmap_load(handle: QPixmapH; fileName: PWideString; format: PAnsiChar = nil; flags: QtImageConversionFlags = QtAutoColor): Boolean; cdecl; external QtIntf name 'QPixmap_load';
function QPixmap_loadFromData(handle: QPixmapH; buf: PByte; len: Cardinal; format: PAnsiChar = nil; flags: QtImageConversionFlags = QtAutoColor): Boolean; overload; cdecl; external QtIntf name 'QPixmap_loadFromData';
function QPixmap_loadFromData(handle: QPixmapH; data: QByteArrayH; format: PAnsiChar = nil; flags: QtImageConversionFlags = QtAutoColor): Boolean; overload; cdecl; external QtIntf name 'QPixmap_loadFromData2';
function QPixmap_save(handle: QPixmapH; fileName: PWideString; format: PAnsiChar; quality: Integer = -1): Boolean; overload; cdecl; external QtIntf name 'QPixmap_save';
function QPixmap_save(handle: QPixmapH; device: QIODeviceH; format: PAnsiChar; quality: Integer = -1): Boolean; overload; cdecl; external QtIntf name 'QPixmap_save2';
procedure QPixmap_copy(handle: QPixmapH; retval: QPixmapH; x: Integer; y: Integer; width: Integer; height: Integer); overload; cdecl; external QtIntf name 'QPixmap_copy';
@ -3744,8 +3771,8 @@ function QImage_create(size: PSize; format: QImageFormat): QImageH; overload; cd
function QImage_create(width: Integer; height: Integer; format: QImageFormat): QImageH; overload; cdecl; external QtIntf name 'QImage_create3';
function QImage_create(data: PByte; width: Integer; height: Integer; format: QImageFormat): QImageH; overload; cdecl; external QtIntf name 'QImage_create4';
function QImage_create(xpm: PAnsiChar): QImageH; overload; cdecl; external QtIntf name 'QImage_create5';
function QImage_create(fileName: PWideString; format: PAnsiChar = 0): QImageH; overload; cdecl; external QtIntf name 'QImage_create6';
function QImage_create(fileName: PAnsiChar; format: PAnsiChar = 0): QImageH; overload; cdecl; external QtIntf name 'QImage_create7';
function QImage_create(fileName: PWideString; format: PAnsiChar = nil): QImageH; overload; cdecl; external QtIntf name 'QImage_create6';
function QImage_create(fileName: PAnsiChar; format: PAnsiChar = nil): QImageH; overload; cdecl; external QtIntf name 'QImage_create7';
function QImage_create(p1: QImageH): QImageH; overload; cdecl; external QtIntf name 'QImage_create8';
function QImage_isNull(handle: QImageH): Boolean; cdecl; external QtIntf name 'QImage_isNull';
function QImage_devType(handle: QImageH): Integer; cdecl; external QtIntf name 'QImage_devType';
@ -3790,13 +3817,13 @@ procedure QImage_mirrored(handle: QImageH; retval: QImageH; horizontally: Boolea
procedure QImage_rgbSwapped(handle: QImageH; retval: QImageH); cdecl; external QtIntf name 'QImage_rgbSwapped';
procedure QImage_invertPixels(handle: QImageH; p1: QImageInvertMode = QImageInvertRgb); cdecl; external QtIntf name 'QImage_invertPixels';
function QImage_load(handle: QImageH; device: QIODeviceH; format: PAnsiChar): Boolean; overload; cdecl; external QtIntf name 'QImage_load';
function QImage_load(handle: QImageH; fileName: PWideString; format: PAnsiChar = 0): Boolean; overload; cdecl; external QtIntf name 'QImage_load2';
function QImage_loadFromData(handle: QImageH; buf: PByte; len: Integer; format: PAnsiChar = 0): Boolean; overload; cdecl; external QtIntf name 'QImage_loadFromData';
function QImage_loadFromData(handle: QImageH; data: QByteArrayH; aformat: PAnsiChar = 0): Boolean; overload; cdecl; external QtIntf name 'QImage_loadFromData2';
function QImage_load(handle: QImageH; fileName: PWideString; format: PAnsiChar = nil): Boolean; overload; cdecl; external QtIntf name 'QImage_load2';
function QImage_loadFromData(handle: QImageH; buf: PByte; len: Integer; format: PAnsiChar = nil): Boolean; overload; cdecl; external QtIntf name 'QImage_loadFromData';
function QImage_loadFromData(handle: QImageH; data: QByteArrayH; aformat: PAnsiChar = nil): Boolean; overload; cdecl; external QtIntf name 'QImage_loadFromData2';
function QImage_save(handle: QImageH; fileName: PWideString; format: PAnsiChar; quality: Integer = -1): Boolean; overload; cdecl; external QtIntf name 'QImage_save';
function QImage_save(handle: QImageH; device: QIODeviceH; format: PAnsiChar; quality: Integer = -1): Boolean; overload; cdecl; external QtIntf name 'QImage_save2';
procedure QImage_fromData(retval: QImageH; data: PByte; size: Integer; format: PAnsiChar = 0); overload; cdecl; external QtIntf name 'QImage_fromData';
procedure QImage_fromData(retval: QImageH; data: QByteArrayH; format: PAnsiChar = 0); overload; cdecl; external QtIntf name 'QImage_fromData2';
procedure QImage_fromData(retval: QImageH; data: PByte; size: Integer; format: PAnsiChar = nil); overload; cdecl; external QtIntf name 'QImage_fromData';
procedure QImage_fromData(retval: QImageH; data: QByteArrayH; format: PAnsiChar = nil); overload; cdecl; external QtIntf name 'QImage_fromData2';
function QImage_serialNumber(handle: QImageH): Integer; cdecl; external QtIntf name 'QImage_serialNumber';
function QImage_paintEngine(handle: QImageH): QPaintEngineH; cdecl; external QtIntf name 'QImage_paintEngine';
function QImage_dotsPerMeterX(handle: QImageH): Integer; cdecl; external QtIntf name 'QImage_dotsPerMeterX';
@ -3808,7 +3835,7 @@ procedure QImage_setOffset(handle: QImageH; p1: PPoint); cdecl; external QtIntf
procedure QImage_textKeys(handle: QImageH; retval: QStringListH); cdecl; external QtIntf name 'QImage_textKeys';
procedure QImage_text(handle: QImageH; retval: PWideString; key: PWideString = nil); overload; cdecl; external QtIntf name 'QImage_text';
procedure QImage_setText(handle: QImageH; key: PWideString; value: PWideString); overload; cdecl; external QtIntf name 'QImage_setText';
procedure QImage_text(handle: QImageH; retval: PWideString; key: PAnsiChar; lang: PAnsiChar = 0); overload; cdecl; external QtIntf name 'QImage_text2';
procedure QImage_text(handle: QImageH; retval: PWideString; key: PAnsiChar; lang: PAnsiChar = nil); overload; cdecl; external QtIntf name 'QImage_text2';
procedure QImage_textLanguages(handle: QImageH; retval: QStringListH); cdecl; external QtIntf name 'QImage_textLanguages';
procedure QImage_setText(handle: QImageH; key: PAnsiChar; lang: PAnsiChar; p3: PWideString); overload; cdecl; external QtIntf name 'QImage_setText2';
@ -3817,7 +3844,7 @@ procedure QBitmap_destroy(handle: QBitmapH); cdecl; external QtIntf name 'QBitma
function QBitmap_create(p1: QPixmapH): QBitmapH; overload; cdecl; external QtIntf name 'QBitmap_create2';
function QBitmap_create(w: Integer; h: Integer): QBitmapH; overload; cdecl; external QtIntf name 'QBitmap_create3';
function QBitmap_create(p1: PSize): QBitmapH; overload; cdecl; external QtIntf name 'QBitmap_create4';
function QBitmap_create(fileName: PWideString; format: PAnsiChar = 0): QBitmapH; overload; cdecl; external QtIntf name 'QBitmap_create5';
function QBitmap_create(fileName: PWideString; format: PAnsiChar = nil): QBitmapH; overload; cdecl; external QtIntf name 'QBitmap_create5';
procedure QBitmap_clear(handle: QBitmapH); cdecl; external QtIntf name 'QBitmap_clear';
procedure QBitmap_fromImage(retval: QBitmapH; image: QImageH; flags: QtImageConversionFlags = QtAutoColor); cdecl; external QtIntf name 'QBitmap_fromImage';
procedure QBitmap_fromData(retval: QBitmapH; size: PSize; bits: PByte; monoFormat: QImageFormat = QImageFormat_MonoLSB); cdecl; external QtIntf name 'QBitmap_fromData';
@ -3832,10 +3859,10 @@ function QPicture_size(handle: QPictureH): Cardinal; cdecl; external QtIntf name
function QPicture_data(handle: QPictureH): PAnsiChar; cdecl; external QtIntf name 'QPicture_data';
procedure QPicture_setData(handle: QPictureH; data: PAnsiChar; size: Cardinal); cdecl; external QtIntf name 'QPicture_setData';
function QPicture_play(handle: QPictureH; p: QPainterH): Boolean; cdecl; external QtIntf name 'QPicture_play';
function QPicture_load(handle: QPictureH; dev: QIODeviceH; format: PAnsiChar = 0): Boolean; overload; cdecl; external QtIntf name 'QPicture_load';
function QPicture_load(handle: QPictureH; fileName: PWideString; format: PAnsiChar = 0): Boolean; overload; cdecl; external QtIntf name 'QPicture_load2';
function QPicture_save(handle: QPictureH; dev: QIODeviceH; format: PAnsiChar = 0): Boolean; overload; cdecl; external QtIntf name 'QPicture_save';
function QPicture_save(handle: QPictureH; fileName: PWideString; format: PAnsiChar = 0): Boolean; overload; cdecl; external QtIntf name 'QPicture_save2';
function QPicture_load(handle: QPictureH; dev: QIODeviceH; format: PAnsiChar = nil): Boolean; overload; cdecl; external QtIntf name 'QPicture_load';
function QPicture_load(handle: QPictureH; fileName: PWideString; format: PAnsiChar = nil): Boolean; overload; cdecl; external QtIntf name 'QPicture_load2';
function QPicture_save(handle: QPictureH; dev: QIODeviceH; format: PAnsiChar = nil): Boolean; overload; cdecl; external QtIntf name 'QPicture_save';
function QPicture_save(handle: QPictureH; fileName: PWideString; format: PAnsiChar = nil): Boolean; overload; cdecl; external QtIntf name 'QPicture_save2';
procedure QPicture_boundingRect(handle: QPictureH; retval: PRect); cdecl; external QtIntf name 'QPicture_boundingRect';
procedure QPicture_setBoundingRect(handle: QPictureH; r: PRect); cdecl; external QtIntf name 'QPicture_setBoundingRect';
procedure QPicture_detach(handle: QPictureH); cdecl; external QtIntf name 'QPicture_detach';
@ -4703,7 +4730,7 @@ procedure QComboBox_setDuplicatesEnabled(handle: QComboBoxH; enable: Boolean); c
procedure QComboBox_setFrame(handle: QComboBoxH; p1: Boolean); cdecl; external QtIntf name 'QComboBox_setFrame';
function QComboBox_hasFrame(handle: QComboBoxH): Boolean; cdecl; external QtIntf name 'QComboBox_hasFrame';
function QComboBox_findText(handle: QComboBoxH; text: PWideString; flags: QtMatchFlags = QtMatchExactly or QtMatchCaseSensitive): Integer; cdecl; external QtIntf name 'QComboBox_findText';
function QComboBox_findData(handle: QComboBoxH; data: QVariantH; role: Integer = QtUserRole; flags: QtMatchFlags = QtMatchExactly or QtMatchCaseSensitive): Integer; cdecl; external QtIntf name 'QComboBox_findData';
function QComboBox_findData(handle: QComboBoxH; data: QVariantH; role: QtItemDataRole = QtUserRole; flags: QtMatchFlags = QtMatchExactly or QtMatchCaseSensitive): Integer; cdecl; external QtIntf name 'QComboBox_findData';
function QComboBox_insertPolicy(handle: QComboBoxH): QComboBoxInsertPolicy; cdecl; external QtIntf name 'QComboBox_insertPolicy';
procedure QComboBox_setInsertPolicy(handle: QComboBoxH; policy: QComboBoxInsertPolicy); cdecl; external QtIntf name 'QComboBox_setInsertPolicy';
function QComboBox_sizeAdjustPolicy(handle: QComboBoxH): QComboBoxSizeAdjustPolicy; cdecl; external QtIntf name 'QComboBox_sizeAdjustPolicy';
@ -4730,7 +4757,7 @@ function QComboBox_currentIndex(handle: QComboBoxH): Integer; cdecl; external Qt
procedure QComboBox_currentText(handle: QComboBoxH; retval: PWideString); cdecl; external QtIntf name 'QComboBox_currentText';
procedure QComboBox_itemText(handle: QComboBoxH; retval: PWideString; index: Integer); cdecl; external QtIntf name 'QComboBox_itemText';
procedure QComboBox_itemIcon(handle: QComboBoxH; retval: QIconH; index: Integer); cdecl; external QtIntf name 'QComboBox_itemIcon';
procedure QComboBox_itemData(handle: QComboBoxH; retval: QVariantH; index: Integer; role: Integer = QtUserRole); cdecl; external QtIntf name 'QComboBox_itemData';
procedure QComboBox_itemData(handle: QComboBoxH; retval: QVariantH; index: Integer; role: QtItemDataRole = QtUserRole); cdecl; external QtIntf name 'QComboBox_itemData';
procedure QComboBox_addItem(handle: QComboBoxH; text: PWideString; userData: QVariantH = nil); overload; cdecl; external QtIntf name 'QComboBox_addItem';
procedure QComboBox_addItem(handle: QComboBoxH; icon: QIconH; text: PWideString; userData: QVariantH = nil); overload; cdecl; external QtIntf name 'QComboBox_addItem2';
procedure QComboBox_addItems(handle: QComboBoxH; texts: QStringListH); cdecl; external QtIntf name 'QComboBox_addItems';
@ -4740,7 +4767,7 @@ procedure QComboBox_insertItems(handle: QComboBoxH; index: Integer; texts: QStri
procedure QComboBox_removeItem(handle: QComboBoxH; index: Integer); cdecl; external QtIntf name 'QComboBox_removeItem';
procedure QComboBox_setItemText(handle: QComboBoxH; index: Integer; text: PWideString); cdecl; external QtIntf name 'QComboBox_setItemText';
procedure QComboBox_setItemIcon(handle: QComboBoxH; index: Integer; icon: QIconH); cdecl; external QtIntf name 'QComboBox_setItemIcon';
procedure QComboBox_setItemData(handle: QComboBoxH; index: Integer; value: QVariantH; role: Integer = QtUserRole); cdecl; external QtIntf name 'QComboBox_setItemData';
procedure QComboBox_setItemData(handle: QComboBoxH; index: Integer; value: QVariantH; role: QtItemDataRole = QtUserRole); cdecl; external QtIntf name 'QComboBox_setItemData';
function QComboBox_view(handle: QComboBoxH): QAbstractItemViewH; cdecl; external QtIntf name 'QComboBox_view';
procedure QComboBox_setView(handle: QComboBoxH; itemView: QAbstractItemViewH); cdecl; external QtIntf name 'QComboBox_setView';
procedure QComboBox_sizeHint(handle: QComboBoxH; retval: PSize); cdecl; external QtIntf name 'QComboBox_sizeHint';
@ -5539,13 +5566,13 @@ procedure QMessageBox_aboutQt(parent: QWidgetH; caption: PWideString = nil); cde
procedure QMessageBox_sizeHint(handle: QMessageBoxH; retval: PSize); cdecl; external QtIntf name 'QMessageBox_sizeHint';
procedure QMessageBox_standardIcon(retval: QPixmapH; icon: QMessageBoxIcon); cdecl; external QtIntf name 'QMessageBox_standardIcon';
procedure QInputDialog_getText(retval: PWideString; parent: QWidgetH; title: PWideString; _label: PWideString; echo: QLineEditEchoMode = QLineEditNormal; text: PWideString = nil; ok: PBoolean = 0; f: QtWindowFlags = 0); cdecl; external QtIntf name 'QInputDialog_getText';
function QInputDialog_getInteger(parent: QWidgetH; title: PWideString; _label: PWideString; value: Integer = 0; minValue: Integer = -2147483647; maxValue: Integer = 2147483647; step: Integer = 1; ok: PBoolean = 0; f: QtWindowFlags = 0): Integer; cdecl; external QtIntf name 'QInputDialog_getInteger';
function QInputDialog_getDouble(parent: QWidgetH; title: PWideString; _label: PWideString; value: Double = 0; minValue: Double = -2147483647; maxValue: Double = 2147483647; decimals: Integer = 1; ok: PBoolean = 0; f: QtWindowFlags = 0): Double; cdecl; external QtIntf name 'QInputDialog_getDouble';
procedure QInputDialog_getItem(retval: PWideString; parent: QWidgetH; title: PWideString; _label: PWideString; list: QStringListH; current: Integer = 0; editable: Boolean = True; ok: PBoolean = 0; f: QtWindowFlags = 0); cdecl; external QtIntf name 'QInputDialog_getItem';
procedure QInputDialog_getText(retval: PWideString; parent: QWidgetH; title: PWideString; _label: PWideString; echo: QLineEditEchoMode = QLineEditNormal; text: PWideString = nil; ok: PBoolean = nil; f: QtWindowFlags = 0); cdecl; external QtIntf name 'QInputDialog_getText';
function QInputDialog_getInteger(parent: QWidgetH; title: PWideString; _label: PWideString; value: Integer = 0; minValue: Integer = -2147483647; maxValue: Integer = 2147483647; step: Integer = 1; ok: PBoolean = nil; f: QtWindowFlags = 0): Integer; cdecl; external QtIntf name 'QInputDialog_getInteger';
function QInputDialog_getDouble(parent: QWidgetH; title: PWideString; _label: PWideString; value: Double = 0; minValue: Double = -2147483647; maxValue: Double = 2147483647; decimals: Integer = 1; ok: PBoolean = nil; f: QtWindowFlags = 0): Double; cdecl; external QtIntf name 'QInputDialog_getDouble';
procedure QInputDialog_getItem(retval: PWideString; parent: QWidgetH; title: PWideString; _label: PWideString; list: QStringListH; current: Integer = 0; editable: Boolean = True; ok: PBoolean = nil; f: QtWindowFlags = 0); cdecl; external QtIntf name 'QInputDialog_getItem';
procedure QColorDialog_getColor(retval: PQColor; init: PQColor = Qtwhite; parent: QWidgetH = nil); cdecl; external QtIntf name 'QColorDialog_getColor';
function QColorDialog_getRgba(p1: QRgb; ok: PBoolean = 0; parent: QWidgetH = nil): QRgb; cdecl; external QtIntf name 'QColorDialog_getRgba';
procedure QColorDialog_getColor(retval: PQColor; init: PQColor; parent: QWidgetH = nil); cdecl; external QtIntf name 'QColorDialog_getColor';
function QColorDialog_getRgba(p1: QRgb; ok: PBoolean = nil; parent: QWidgetH = nil): QRgb; cdecl; external QtIntf name 'QColorDialog_getRgba';
function QColorDialog_customCount(): Integer; cdecl; external QtIntf name 'QColorDialog_customCount';
function QColorDialog_customColor(p1: Integer): QRgb; cdecl; external QtIntf name 'QColorDialog_customColor';
procedure QColorDialog_setCustomColor(p1: Integer; p2: QRgb); cdecl; external QtIntf name 'QColorDialog_setCustomColor';

View File

@ -49,6 +49,7 @@ type
TQtWidgetSet = Class(TWidgetSet)
private
App: QApplicationH;
SavedDCList: TList;
public
// Application
procedure AppInit(var ScreenInfo: TScreenInfo); override;
@ -151,6 +152,39 @@ const
KEYMAP_TOGGLE = $20000;
KEYMAP_EXTENDED = $40000;
function QtObjectFromWidgetH(const WidgetH: QWidgetH): TQtWidget;
var
V: QVariantH;
Ok: Boolean;
QtWg: TQtWidget;
begin
Result:=nil;
V := QVariant_Create();
try
QObject_property(QObjectH(WidgetH), V, 'lclwidget');
if not QVariant_IsNull(v) and QVariant_isValid(V) then
begin
//Write('Got a valid variant .. ');
QtWg:=TQtWidget(QVariant_toUint(V, @Ok));
if OK then
begin
//Write('Converted successfully, Control=');
if QtWg<>nil then
begin
Result := QtWg;
//WriteLn(Result.LCLObject.Name);
end else
;//WriteLn('nil');
end else
;//WriteLn('Can''t convert to UINT');
end else
;//Writeln('GetFocus: Variant is NULL or INVALID');
finally
QVariant_Destroy(V);
end;
end;
procedure EventTrace(message: string; data: pointer);
begin

View File

@ -38,9 +38,14 @@ end;
------------------------------------------------------------------------------}
destructor TQtWidgetSet.Destroy;
begin
QtWidgetSet := nil;
if SavedDCList<>nil then
SavedDCList.Free;
inherited Destroy;
end;
{------------------------------------------------------------------------------
@ -162,6 +167,7 @@ begin
begin
Result := TColor(QImage_pixel(TQtDeviceContext(CanvasHandle).vImage, X, Y));
{ Color := QColor_create(QImage_pixel(TQtDeviceContext(CanvasHandle).vImage, X, Y));
Result := RGBToColor(QColor_red(Color), QColor_green(Color), QColor_blue(Color));
@ -170,9 +176,37 @@ begin
end;
end;
procedure TQtWidgetSet.DCSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor);
procedure dbgcolor(msg: string; C:TQColor);
begin
debugLn(msg+' spec=%x alpha=%x r=%x g=%x b=%x pad=%x',[c.ColorSpec,c.Alpha,c.r,c.g,c.b,c.pad]);
end;
procedure TQtWidgetSet.DCSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor);
var
Color: TQColor;
Pen, APen: QPenH;
Painter: QPainterH;
begin
if IsValidDC(CanvasHandle) then
begin
//WriteLn('TQtWidgetSet.DCSetPixel X=',X,' Y=',Y, ' AColor=',dbghex(AColor));
//TODO: First compare color if same, draw point with current pen
Painter :=TQtDeviceContext(CanvasHandle).Widget;
Pen := QPainter_Pen(Painter);
APen := QPen_Create(Pen);
QPen_color(APen,@Color);
ColorRefToTQColor(AColor, Color);
QPen_setColor(Apen, @Color);
Qpainter_SetPen(Painter, APen);
QPainter_DrawPoint(Painter, X,Y);
QPainter_SetPen(Painter, Pen);
QPen_Destroy(APen);
end;
end;
procedure TQtWidgetSet.DCRedraw(CanvasHandle: HDC);
@ -232,7 +266,8 @@ begin
if aObject is TObject then
begin
Result := (aObject is TQtFont) or (aObject is TQtBrush) or (aObject is TQtImage);
Result := (aObject is TQtFont) or (aObject is TQtBrush) or (aObject is TQtImage)
or (aObject is TQtPen) or (aObject is TQTRegion);
end;
end;

View File

@ -31,9 +31,17 @@ uses
// Free Pascal
Classes, SysUtils, Types,
// LCL
LCLType, Menus, LCLProc;
LCLType, Menus, LCLProc, Graphics;
type
{ TQtResource }
TQtResource = class(TObject)
public
Owner: TObject;
end;
{ TQtAction }
TQtAction = class(TObject)
@ -70,7 +78,7 @@ type
{ TQtFont }
TQtFont = class(TObject)
TQtFont = class(TQtResource)
private
public
Widget: QFontH;
@ -116,11 +124,10 @@ type
{ TQtBrush }
TQtBrush = class(TObject)
TQtBrush = class(TQtResource)
private
public
Widget: QBrushH;
public
constructor Create(CreateHandle: Boolean); virtual;
destructor Destroy; override;
procedure setStyle(style: QtBrushStyle);
@ -128,13 +135,13 @@ type
{ TQtPen }
TQtPen = class(TObject)
TQtPen = class(TQtResource)
private
public
Widget: QPenH;
public
constructor Create(CreateHandle: Boolean); virtual;
destructor Destroy; override;
public
function Width: Integer;
function Style: QtPenStyle;
procedure setStyle(style: QtPenStyle);
@ -146,37 +153,57 @@ type
{ TQtRegion }
TQtRegion = class(TObject)
TQtRegion = class(TQtResource)
private
public
Widget: QRegionH;
public
constructor Create(CreateHandle: Boolean); virtual; overload;
constructor Create(CreateHandle: Boolean; X1,Y1,X2,Y2: Integer); virtual; overload;
destructor Destroy; override;
end;
// NOTE: PQtDCData was a pointer to a structure with QPainter information
// about current state, currently this functionality is implemented
// using native functions qpainter_save and qpainter_restore. If in
// future it needs to save/restore aditional information, PQtDCData
// should point to a structure holding the additional information.
// see SaveDC and RestoreDC for more information.
// for example: what about textcolor, it's currently not saved....
PQtDCData = pointer;
{ TQtDeviceContext }
TQtDeviceContext = class(TObject)
private
SelFont: TQTFont;
SelBrush: TQTBrush;
SelPen: TQtPen;
PenColor: TQColor;
procedure RestorePenColor;
procedure RestoreTextColor;
public
Widget: QPainterH;
Parent: QWidgetH;
Origin: TPoint;
ParentPixmap: QPixmapH;
vBrush: TQtBrush;
vFont: TQtFont;
vImage: QImageH;
vPen: TQtPen;
vRegion: TQtRegion;
public
vBackgroundBrush: TQtBrush;
vClipRect: PRect; // is the cliprect paint event give to us
vClipRectDirty: boolean; // false=paint cliprect is still valid
vTextColor: TColor;
constructor Create(WidgetHandle: THandle); virtual;
destructor Destroy; override;
public
function CreateDCData: PQtDCDATA;
function RestoreDCData(DCData: PQtDCData): boolean;
procedure DebugClipRect(const msg: string);
procedure drawPoint(x1: Integer; y1: Integer);
procedure drawRect(x1: Integer; y1: Integer; w: Integer; h: Integer);
procedure drawText(x: Integer; y: Integer; s: PWideString);
procedure drawText(x: Integer; y: Integer; s: PWideString); overload;
procedure DrawText(x,y,w,h,flags: Integer; s:PWideString); overload;
procedure drawLine(x1: Integer; y1: Integer; x2: Integer; y2: Integer);
procedure drawEllipse(x: Integer; y: Integer; w: Integer; h: Integer);
procedure setBrushOrigin(x, y: Integer);
@ -185,8 +212,11 @@ type
procedure setFont(f: TQtFont);
function brush: TQtBrush;
procedure setBrush(brush: TQtBrush);
function BackgroundBrush: TQtBrush;
function pen: TQtPen;
procedure setPen(pen: TQtPen);
function SetBkColor(Color: TcolorRef): TColorRef;
function SetBkMode(BkMode: Integer): Integer;
function region: TQtRegion;
procedure setRegion(region: TQtRegion);
procedure drawImage(targetRect: PRect; image: QImageH; sourceRect: PRect; flags: QtImageConversionFlags = QtAutoColor);
@ -209,6 +239,10 @@ type
procedure grabWindow(p1: Cardinal; x: Integer = 0; y: Integer = 0; w: Integer = -1; h: Integer = -1);
procedure toImage(retval: QImageH);
end;
procedure TQColorToColorRef(const AColor: TQColor; out AColorRef: TColorRef);
procedure ColorRefToTQColor(const AColorRef: TColorRef; var AColor:TQColor);
procedure DebugRegion(const msg: string; Rgn: QRegionH);
implementation
@ -684,9 +718,66 @@ begin
inherited Destroy;
end;
{ TQtDeviceContext }
procedure TQtDeviceContext.DebugClipRect(const msg: string);
var
Rgn: QRegionH;
R: TRect;
ok: boolean;
begin
ok := QPainter_hasClipping(Widget);
Write(Msg, 'DC: HasClipping=', ok);
if Ok then
begin
Rgn := QRegion_Create;
QPainter_ClipRegion(Widget, Rgn);
DebugRegion('', Rgn);
QRegion_Destroy(Rgn);
end else
WriteLn;
end;
{------------------------------------------------------------------------------
Function: TQtDeviceContext.Create
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
function TQtDeviceContext.CreateDCData: PQtDCDATA;
begin
Qpainter_save(Widget);
result:=nil; // doesn't matter;
end;
{------------------------------------------------------------------------------
Function: TQtDeviceContext.RestoreDCData
Params: DCData, dummy in current implementation
Returns: true if QPainter state was successfuly restored
------------------------------------------------------------------------------}
function TQtDeviceContext.RestoreDCData(DCData: PQtDCData):boolean;
begin
QPainter_restore(Widget);
result:=true;
end;
procedure TQtDeviceContext.RestorePenColor;
begin
Qpainter_setPen(Widget, @PenColor);
end;
procedure TQtDeviceContext.RestoreTextColor;
var
CurPen: QPenH;
TxtColor: TQColor;
begin
CurPen := QPainter_Pen(Widget);
QPen_color(CurPen, @PenColor);
TxtColor := PenColor;
ColorRefToTQColor(vTextColor, TxtColor);
Qpainter_setPen(Widget, @txtColor);
end;
{------------------------------------------------------------------------------
Function: TQtDeviceContext.Create
Params: None
@ -700,19 +791,26 @@ begin
if WidgetHandle = 0 then
begin
Parent := nil;
Widget := QPainter_create
ParentPixmap := QPixmap_Create(10,10);
Widget := QPainter_Create(QPaintDeviceH(ParentPixmap));
end
else
begin
Parent := TQtMainWindow(WidgetHandle).Widget;
Parent := TQtWidget(WidgetHandle).Widget;
Widget := QPainter_create(QWidget_to_QPaintDevice(Parent));
end;
vBrush := TQtBrush.Create(False);
vBrush.Owner := Self;
vFont := TQtFont.Create(False);
vFont.Owner := Self;;
vPen := TQtPen.Create(False);
vPen.Owner := Self;
vRegion := TQtRegion.Create(False);
vRegion.Owner := Self;
vBackgroundBrush := TQtBrush.Create(False);
vBackgroundBrush.Owner := Self;
vTextColor := ColorToRGB(clWindowText);
end;
{------------------------------------------------------------------------------
@ -726,6 +824,9 @@ begin
WriteLn('TQtDeviceContext.Destroy');
{$endif}
if vClipRect<>nil then
dispose(vClipRect);
vBrush.Widget := nil;
vBrush.Free;
vFont.Widget := nil;
@ -734,11 +835,16 @@ begin
vPen.Free;
vRegion.Widget := nil;
vRegion.Free;
vBackgroundBrush.Widget := nil;
vBackgroundBrush.Free;
if vImage <> nil then QImage_destroy(vImage);
QPainter_destroy(Widget);
if ParentPixmap<>nil then
QPixmap_destroy(ParentPixmap);
inherited Destroy;
end;
@ -772,29 +878,43 @@ var
QtFontMetrics: TQtFontMetrics;
begin
{$ifdef VerboseQt}
Write('TQtDeviceContext.drawText TargetX: ', (Origin.X + X), ' TargetY: ', (Origin.Y + Y));
Write('TQtDeviceContext.drawText TargetX: ', X, ' TargetY: ', Y);
{$endif}
QtFontMetrics := TQtFontMetrics.Create(Font.Widget);
try
Save;
translate(Origin.X + x, Origin.Y + y + QtFontMetrics.height);
translate(x, y);
Rotate(-0.1 * vFont.Angle);
QPainter_drawText(Widget, 0, 0, s);
RestoreTextColor;
QPainter_drawText(Widget, 0, QtFontMetrics.ascent, s);
RestorePenColor;
Restore;
{$ifdef VerboseQt}
WriteLn(' Font metrics height: ', QtFontMetrics.height, ' Angle: ', Round(0.1 * vFont.Angle));
WriteLn(' Font metrics height: ', QtFontMetrics.height, ' Angle: ',
Round(0.1 * vFont.Angle));
{$endif}
finally
QtFontMetrics.Free;
end;
end;
procedure TQtDeviceContext.DrawText(x, y, w, h, flags: Integer; s: PWideString);
begin
RestoreTextColor;
QPainter_DrawText(Widget, x, y, w, h, Flags, s);
RestorePenColor;
end;
{------------------------------------------------------------------------------
Function: TQtDeviceContext.drawLine
Params: None
@ -859,8 +979,10 @@ end;
function TQtDeviceContext.font: TQtFont;
begin
vFont.Widget := QPainter_font(Widget);
Result := vFont;
if SelFont=nil then
Result := vFont
else
Result := SelFont;
end;
{------------------------------------------------------------------------------
@ -870,10 +992,10 @@ end;
------------------------------------------------------------------------------}
procedure TQtDeviceContext.setFont(f: TQtFont);
begin
if (f.Widget <> nil) and (Widget <> nil) and (Parent <> nil) then
SelFont := F;
if (f.Widget <> nil) and (Widget <> nil) {and (Parent <> nil)} then
begin
QPainter_setFont(Widget, QFontH(f.Widget));
vFont.Angle := f.Angle;
end;
end;
@ -886,8 +1008,10 @@ end;
function TQtDeviceContext.brush: TQtBrush;
begin
vBrush.Widget := QPainter_brush(Widget);
Result := vBrush;
if SelBrush=nil then
Result := vBrush
else
Result := SelBrush;
end;
{------------------------------------------------------------------------------
@ -897,7 +1021,15 @@ end;
------------------------------------------------------------------------------}
procedure TQtDeviceContext.setBrush(brush: TQtBrush);
begin
if (brush.Widget <> nil) and (Widget <> nil) then QPainter_setBrush(Widget, brush.Widget);
SelBrush := Brush;
if (brush.Widget <> nil) and (Widget <> nil) then
QPainter_setBrush(Widget, brush.Widget);
end;
function TQtDeviceContext.BackgroundBrush: TQtBrush;
begin
vBackgroundBrush.Widget := QPainter_background(Widget);
result := vBackGroundBrush;
end;
{------------------------------------------------------------------------------
@ -908,7 +1040,10 @@ end;
function TQtDeviceContext.pen: TQtPen;
begin
vPen.Widget := QPainter_pen(Widget);
Result := vPen;
if SelPen=nil then
Result := vPen
else
Result := SelPen;
end;
{------------------------------------------------------------------------------
@ -918,7 +1053,69 @@ end;
------------------------------------------------------------------------------}
procedure TQtDeviceContext.setPen(pen: TQtPen);
begin
if (pen.Widget <> nil) and (Widget <> nil) then QPainter_setPen(Widget, pen.Widget);
SelPen := Pen;
if (pen.Widget <> nil) and (Widget <> nil) then
QPainter_setPen(Widget, pen.Widget);
end;
procedure TQColorToColorRef(const AColor: TQColor; out AColorRef: TColorRef);
begin
AColorRef:=(( AColor.r shr 8) and $FF)
or (AColor.g and $ff00)
or ((AColor.b shl 8) and $ff0000);
end;
procedure ColorRefToTQColor(const AColorRef: TColorRef; var AColor:TQColor);
begin
AColor.r:=(AColorRef and $ff);
AColor.r:=AColor.r+(AColor.r shl 8);
AColor.g:=(AColorRef and $ff00);
AColor.g:=AColor.g+(AColor.g shr 8);
AColor.b:=(AColorRef and $ff0000) shr 8;
AColor.b:=AColor.b+(AColor.b shr 8);
end;
procedure DebugRegion(const msg: string; Rgn: QRegionH);
var
R: TRect;
ok: boolean;
begin
Write(Msg);
ok := QRegion_isEmpty(Rgn);
QRegion_BoundingRect(Rgn, @R);
WriteLn(' Empty=',Ok,' Rect=', dbgs(R));
end;
function TQtDeviceContext.SetBkColor(Color: TcolorRef): TColorRef;
var
ABrush: QBrushH;
NColor: TQColor;
begin
result := CLR_INVALID;
ABrush := BackgroundBrush.Widget;
if ABrush<>nil then
begin
NColor := QBrush_Color(aBrush)^;
TQColorToColorRef(NColor, Result);
ColorRefToTQColor(ColorToRGB(Color), NColor);
QBrush_setColor(ABrush, @NColor);
end;
end;
function TQtDeviceContext.SetBkMode(BkMode: Integer): Integer;
var
Mode: QtBGMode;
begin
result := 0;
if Widget<>nil then
begin
Mode := QPainter_BackgroundMode(Widget);
if Mode=QtOpaqueMode then result := OPAQUE
else result := TRANSPARENT;
if BkMode=OPAQUE then Mode := QtOpaqueMode
else Mode := QtTransparentMode;
QPainter_SetBackgroundMode(Widget, Mode);
end;
end;
{------------------------------------------------------------------------------
@ -928,6 +1125,9 @@ end;
------------------------------------------------------------------------------}
function TQtDeviceContext.region: TQtRegion;
begin
if vRegion.Widget=nil then
vRegion.Widget := QRegion_Create();
QPainter_clipRegion(Widget, vRegion.Widget);
Result := vRegion;
end;
@ -939,7 +1139,8 @@ end;
------------------------------------------------------------------------------}
procedure TQtDeviceContext.setRegion(region: TQtRegion);
begin
if (region.Widget <> nil) and (Widget <> nil) then QPainter_setClipRegion(Widget, Region.Widget);
if (region.Widget <> nil) and (Widget <> nil) then
QPainter_setClipRegion(Widget, Region.Widget);
end;
{------------------------------------------------------------------------------
@ -953,11 +1154,6 @@ var
LocalRect: TRect;
begin
LocalRect := targetRect^;
LocalRect.Left := LocalRect.Left + Origin.X;
LocalRect.Top := LocalRect.Top + Origin.Y;
QPainter_drawImage(Widget, PRect(@LocalRect), image, sourceRect, flags);
end;

File diff suppressed because it is too large Load Diff

View File

@ -39,6 +39,9 @@
- Once on every OnPaint event
------------------------------------------------------------------------------}
function TQtWidgetSet.BeginPaint(Handle: hWnd; Var PS : TPaintStruct): hdc;
var
Widget: TQtWidget;
DC: TQtDeviceContext;
begin
{$ifdef VerboseQtWinAPI}
WriteLn('Trace:> [WinAPI BeginPaint] Handle=', dbgs(Handle));
@ -48,9 +51,31 @@ begin
Result :=GetDoubleBufferedDC(Handle)
else}
PS.hdc := HDC(TQtDeviceContext.Create(Handle));
if Handle <> 0 then TQtMainWindow(Handle).Canvas := TQtDeviceContext(PS.hdc);
DC := TQtDeviceContext.Create(Handle);
PS.hdc := HDC(DC);
if Handle<>0 then
begin
// if current handle has paintdata information,
// setup hdc with it
//DC.DebugClipRect('BeginPaint: Before');
Widget := TQtWidget(Handle);
if Widget.PaintData.ClipRegion<>nil then
begin
//Write('>>> Setting Paint ClipRegion: ');
//DebugRegion('PaintData.ClipRegion: ', Widget.PaintData.ClipRegion);
QPainter_SetClipRegion(DC.Widget, Widget.PaintData.ClipRegion);
end;
if Widget.PaintData.ClipRect<>nil then
begin
New(DC.vClipRect);
DC.vClipRect^ := Widget.PaintData.ClipRect^;
end;
//DC.DebugClipRect('BeginPaint: After');
// TODO: ask what is this good for
if Widget is TQtMainWindow then
TQtMainWindow(Widget).Canvas := DC;
end;
Result := PS.hdc;
@ -90,8 +115,47 @@ end;
------------------------------------------------------------------------------}
function TQtWidgetSet.CombineRgn(Dest, Src1, Src2: HRGN; fnCombineMode: Longint): Longint;
var
RDest,RSrc1,RSrc2: QRegionH;
begin
Result := SimpleRegion;
result:=ERROR;
if not IsValidGDIObject(Dest) or not IsValidGDIObject(Src1) then
exit
else begin
RDest := TQtRegion(Dest).Widget;
RSrc1 := TQtRegion(Src1).Widget;
end;
if (fnCombineMode<>RGN_COPY) and not IsValidGDIObject(Src2) then
exit
else
RSrc2 := TQtRegion(Src2).Widget;
case fnCombineMode of
RGN_AND:
QRegion_Intersect(RSrc1, RDest, RSrc2);
RGN_COPY:
begin
// union of Src1 with a null region
RSrc2 := QRegion_Create;
QRegion_unite(RSrc1, RDest, RSrc2);
QRegion_Destroy(RSrc2);
end;
RGN_DIFF:
QRegion_Subtract(RSrc1, RDest, RSrc2);
RGN_OR:
QRegion_Unite(RSrc1, RDest, RSrc2);
RGN_XOR:
QRegion_eor(RSrc1, RDest, RSrc2);
end;
if QRegion_isEmpty(RDest) then
result := NULLREGION
else begin
// TODO: Evaluate if region is complex
Result := SIMPLEREGION;
end;
end;
{------------------------------------------------------------------------------
@ -143,9 +207,11 @@ end;
function TQtWidgetSet.CreateBrushIndirect(const LogBrush: TLogBrush): HBRUSH;
var
QtBrush: TQtBrush;
Color: TQColor;
begin
{$ifdef VerboseQtWinAPI}
WriteLn(Format('Trace:> [WinAPI CreateBrushIndirect] Style: %d, Color: %8x', [LogBrush.lbStyle, LogBrush.lbColor]));
WriteLn(Format('Trace:> [WinAPI CreateBrushIndirect] Style: %d, Color: %8x (%s)',
[LogBrush.lbStyle, LogBrush.lbColor, ColorToString(LogBrush.lbColor)]));
{$endif}
result := 0;
@ -210,6 +276,12 @@ begin
QtRadialGradientPattern,
QtConicalGradientPattern,
QtTexturePattern = 24 );}
// set brush color
Color := QBrush_Color(QtBrush.Widget)^;
ColorRefToTQColor(ColorToRGB(logBrush.lbColor), Color);
QBrush_setColor(QtBrush.Widget, @Color);
except
{$ifdef VerboseQtWinAPI}
WriteLn('[WinAPI CreateBrushIndirect] Failed');
@ -327,27 +399,23 @@ begin
with LogPen do
begin
case lopnStyle of
PS_SOLID: QtPen.setStyle(QtSolidLine);
PS_DASH: QtPen.setStyle(QtDashLine);
PS_DOT: QtPen.setStyle(QtDotLine);
PS_DASHDOT:QtPen.setStyle(QtDashDotLine);
PS_DASHDOTDOT:QtPen.setStyle(QtDashDotDotLine);
PS_USERSTYLE: QtPen.setStyle(QtCustomDashLine);
PS_NULL:QtPen.setStyle(QtNoPen);
else
QtPen.setStyle(QtSolidLine);
end;
case lopnStyle of
PS_SOLID: QtPen.setStyle(QtSolidLine);
PS_DASH: QtPen.setStyle(QtDashLine);
PS_DOT: QtPen.setStyle(QtDotLine);
PS_DASHDOT:QtPen.setStyle(QtDashDotLine);
PS_DASHDOTDOT:QtPen.setStyle(QtDashDotDotLine);
PS_USERSTYLE: QtPen.setStyle(QtCustomDashLine);
PS_NULL:QtPen.setStyle(QtNoPen);
else
QtPen.setStyle(QtSolidLine);
end;
QtPen.setWidth(lopnWidth.X);
{TODO: FIX Color issues }
color.Alpha := TColorToFPColor(lopnColor).Alpha;
color.r := TColorToFPColor(lopnColor).Red;
color.g := TColorToFPColor(lopnColor).Green;
color.b := TColorToFPColor(lopnColor).Blue;
QtPen.setColor(Color);
QtPen.setWidth(lopnWidth.X);
QPen_Color(QtPen.Widget, @Color);
ColorRefToTQColor(ColorToRGB(lopnColor), Color);
QPen_setColor(QtPen.Widget, @Color);
end;
Result := HPEN(QtPen);
@ -366,6 +434,9 @@ var
begin
QtRegion := TQtRegion.Create(True, X1,Y1,X2,Y2);
Result := HRGN(QtRegion);
{$ifdef VerboseQtWinAPI}
WriteLn('Trace: [WinAPI CreateRectRgn] Result: ', IntToStr(Result),' QRegionH=', ptrint(QtRegion.Widget));
{$endif}
end;
{------------------------------------------------------------------------------
@ -442,8 +513,44 @@ begin
{$endif}
// TQtImage(aObject).Free;
end
{------------------------------------------------------------------------------
Region
------------------------------------------------------------------------------}
else if aObject is TQtRegion then
begin
{$ifdef VerboseQtWinAPI}
ObjType := 'Region';
{$endif}
// TQtRegion(aObject).Free;
end
{------------------------------------------------------------------------------
Pen
------------------------------------------------------------------------------}
else if aObject is TQtPen then
begin
{$ifdef VerboseQtWinAPI}
ObjType := 'Pen';
{$endif}
// TQtRegion(aObject).Free;
end;
if AObject is TQtResource then
if TQtResource(AObject).Owner<>nil then
begin
// this is an owned (default) resource, let owner free it
DebugLn('WARNING: Trying to Free a default resource');
AObject:=nil;
end;
if AObject<>nil then
AObject.Free;
// Find out if we want to release internal GDI object
{ case GDIType of
gdiBrush:
@ -480,36 +587,76 @@ function TQtWidgetSet.DrawText(DC: HDC; Str: PChar; Count: Integer;
var
WideStr: WideString;
QtFontMetrics: TQtFontMetrics;
R: TRect;
F: Integer;
QtDC: TQtDeviceContext;
begin
{$ifdef VerboseQtWinAPI}
WriteLn('[WinAPI DrawText] DC: ', dbgs(DC), ' Str: ', string(Str),
' CalcRect: ', dbgs((Flags and DT_CALCRECT) = DT_CALCRECT),
' Rect.Left: ', Rect.Left, ' Rect.Top: ', Rect.Top);
' CalcRect: ', dbgs((Flags and DT_CALCRECT) = DT_CALCRECT));
{$endif}
Result := 0;
if not IsValidDC(DC) then Exit;
if not IsValidDC(DC) then
Exit;
QtDC :=TQtDeviceContext(DC);
WideStr := UTF8Decode(Str);
QtFontMetrics := TQtFontMetrics.Create(TQtDeviceContext(DC).font.Widget);
QtFontMetrics := TQtFontMetrics.Create(QtDC.font.Widget);
try
// convert DT flags to QT Flags
F := 0;
// horizontal alignment
if Flags and DT_CENTER <> 0 then
F := F or QTAlignHCenter
else
if Flags and DT_RIGHT <> 0 then
F := F or QTAlignRight
else
F := F or QTAlignLeft;
// vertical alignment
if Flags and DT_VCENTER <> 0 then
F := F or QTAlignVCenter
else
if Flags and DT_BOTTOM <> 0 then
F := F or QTAlignBottom
else
F := F or QTAlignTop;
// mutually exclusive wordbreak and singleline
if Flags and DT_WORDBREAK <> 0 then
F := F or $1000{QTTExtWordWrap}
else
if Flags and DT_SINGLELINE <> 0 then
F := F or $100;{QTTextSingleLine;}
if Flags and DT_NOPREFIX = 0 then
F := F or $800;{QTTextShowMnemonic;}
QFontMetrics_BoundingRect(QtFontMetrics.Widget, @R, @Rect, F, @WideStr);
//TODO: result should be different when DT_VCENTER or DT_BOTTOM is set
Result := QtFontMetrics.height;
if (Flags and DT_CALCRECT) = DT_CALCRECT then
begin
Rect.Right := Rect.Left + QtFontMetrics.width(@WideStr);
Rect.Bottom := Rect.Top + QtFontMetrics.height;
end;
finally
QtFontMetrics.Free;
end;
if (Flags and DT_CALCRECT) = DT_CALCRECT then Exit;
if (Flags and DT_CALCRECT) = DT_CALCRECT then
begin
{$ifdef VerboseQtWinAPI}
WriteLn('[WinAPI DrawText] Rect=', dbgs(Rect));
{$endif}
Exit;
end;
TQtDeviceContext(DC).drawText(Rect.Left, Rect.Top, @WideStr);
with Rect do
QtDC.DrawText(left, Top, Right-Left, Bottom-Top, F, @WideStr);
end;
{------------------------------------------------------------------------------
@ -566,6 +713,7 @@ function TQtWidgetSet.ExtTextOut(DC: HDC; X, Y: Integer; Options: Longint;
Rect: PRect; Str: PChar; Count: Longint; Dx: PInteger): Boolean;
var
WideStr: WideString;
Painter: QPainterH;
begin
{$ifdef VerboseQtWinAPI}
WriteLn('[WinAPI ExtTextOut]');
@ -577,14 +725,35 @@ begin
WideStr := UTF8Decode(Str);
// if TQtDeviceContext(DC).isDrawing then TQtDeviceContext(DC).drawText(X, Y, @WideStr)
// else TQtDeviceContext(DC).AddObject(dcTextOut, @WideStr, X, Y);
TQtDeviceContext(DC).drawText(X, Y, @WideStr);
Result := True;
end;
function TQtWidgetSet.FillRect(DC: HDC; const Rect: TRect; Brush: HBRUSH
): Boolean;
var
Painter: QPainterH;
ABrush: QBrushH;
begin
result:=false;
{$ifdef VerboseQtWinAPI}
DebugLn('[WinAPI FillRect Rect=', dbgs(Rect),' Brush=', dbgHex(Brush));
{$endif}
if not IsValidDC(DC) then
exit;
if not IsValidGdiObject(Brush) then
exit;
Painter:= TQTDeviceContext(DC).Widget;
ABrush := TQTBrush(Brush).Widget;
QPainter_FillRect(Painter, @Rect, ABrush);
result := true;
end;
{------------------------------------------------------------------------------
Method: TQtWidgetSet.GetBitmapRawImageDescription
Params: none
@ -660,6 +829,61 @@ begin
Result:=true;
end;
{------------------------------------------------------------------------------
Function: GetClipBox
Params: dc, lprect
Returns: Integer
Returns the smallest rectangle which includes the entire current
Clipping Region, or if no Clipping Region is set, the current
dimensions of the Drawable.
The result can be one of the following constants
Error
NullRegion
SimpleRegion
ComplexRegion
------------------------------------------------------------------------------}
function TQtWidgetSet.GetClipBox(DC: hDC; lpRect: PRect): Longint;
var
ARegion: QRegionH;
begin
Result := SIMPLEREGION;
If lpRect <> nil then
lpRect^ := Rect(0,0,0,0);
If not IsValidDC(DC) then
Result := ERROR;
if Result <> ERROR
then with TQtDeviceContext(DC) do
begin
{$ifdef VerboseQtWinAPI}
Write('TQtWidgetSet.GetClipBox FastClip=',((vClipRect<>nil) and not vClipRectDirty));
{$endif}
// the most correct way to get a clipbox if through
// region.boundingrect, but it's slower.
// TODO: remove "and false" below when vClipRectDirty is implemented
// it should be "true" when user set a custom clip rect
// and "false" on beginpaint
if (vClipRect<>nil) and not vClipRectDirty and false then
lpRect^ := vClipRect^
else
if QPainter_HasClipping(Widget) then
begin
ARegion := QRegion_Create;
QPainter_ClipRegion(Widget, ARegion);
QRegion_boundingRect(ARegion, lpRect);
QRegion_destroy(ARegion);
end;
{$ifdef VerboseQtWinAPI}
WriteLn(' Rect=', dbgs(lprect^));
{$endif}
end;
end;
{------------------------------------------------------------------------------
Function: GetClipRGN
Params: dc, rgn
@ -674,7 +898,25 @@ end;
------------------------------------------------------------------------------}
Function TQtWidgetSet.GetClipRGN(DC : hDC; RGN : hRGN): Longint;
begin
Result := 1;
{$ifdef VerboseQtWinAPI}
Write('Trace: [WinAPI GetClipRgn] DC: ', IntToStr(DC),' RGN: ', IntToStr(Rgn));
if RGN<>0 then
WriteLn(' QRegionH=', PtrInt(TQtRegion(Rgn).Widget))
else
WriteLn(' Rgn=0');
{$endif}
// it assumes that clipregion object has been created some other place
result := -1;
if not IsValidDC(DC) then
exit;
if rgn=0 then
exit;
if not QPainter_HasClipping(TQtDeviceContext(DC).Widget) then
result := 0
else begin
QPainter_ClipRegion(TQtDeviceContext(DC).Widget, TQtRegion(Rgn).Widget);
Result := 1;
end;
end;
{------------------------------------------------------------------------------
@ -705,7 +947,7 @@ begin
WriteLn('Trace:> [WinAPI GetDC] hWnd: ', IntToStr(hWnd));
{$endif}
Result := HDC(TQtDeviceContext.Create(0));
Result := HDC(TQtDeviceContext.Create(hWnd));
// if hWnd <> 0 then TQtCustomForm(hWnd).Canvas := TQtDeviceContext(Result);
@ -714,6 +956,28 @@ begin
{$endif}
end;
function TQtWidgetSet.GetFocus: HWND;
var
WidgetH: QWidgetH;
Obj: TQtWidget;
begin
result:=0;
WidgetH:=QApplication_FocusWidget();
if WidgetH<>nil then
begin
Obj := QtObjectFromWidgetH(WidgetH);
if Obj<>nil then
result:=Hwnd(Obj);
{$ifdef VerboseFocus}
Write('TQtWidgetSet.GetFocus: WidgetH=',dbghex(ptrint(WidgetH)), ' QtWidget=', dbgsname(Obj));
if Obj<>nil then
WriteLn(' LclObject=', dbgsname(Obj.LCLObject))
else
WriteLn;
{$endif}
end;
end;
{------------------------------------------------------------------------------
Method: TQtWidgetSet.GetDeviceRawImageDescription
@ -911,6 +1175,14 @@ begin
{$endif}
end;
function TQtWidgetSet.GetProp(Handle: hwnd; Str: PChar): Pointer;
begin
if Handle<>0 then
result := TQtWidget(Handle).Props[str]
else
result := nil;
end;
{------------------------------------------------------------------------------
Method: TQtWidgetSet.GetRawImageFromDevice
Params: none
@ -1550,6 +1822,34 @@ begin
end;
end;
function TQtWidgetSet.GetWindowOrgEx(dc: hdc; P: PPoint): Integer;
var
Matrix: QMatrixH;
begin
{$ifdef VerboseQtWinAPI}
WriteLn('Trace: > [WinAPI GetWindowOrgEx]');
{$endif}
Result := 0;
if not IsValidDC(DC) and (P<>nil) then
begin
{$ifdef VerboseQtWinAPI}
WriteLn('Trace: < [WinAPI GetWindowOrgEx] No valid DC or P is nil');
{$endif}
exit;
end;
Matrix := QPainter_Matrix(TQtDeviceContext(DC).Widget);
if Matrix<>nil then
begin
P^.X := Trunc(QMatrix_Dx(Matrix));
P^.Y := Trunc(QMatrix_Dy(Matrix));
result := 1;
end;
{$ifdef VerboseQtWinAPI}
WriteLn('Trace: < [WinAPI GetWindowOrgEx] Result=', dbgs(p^));
{$endif}
end;
{------------------------------------------------------------------------------
Method: GetWindowRect
@ -1673,11 +1973,14 @@ end;
------------------------------------------------------------------------------}
function TQtWidgetSet.InvalidateRect(aHandle: HWND; Rect: pRect; bErase: Boolean): Boolean;
var
R: TRect;
begin
{$ifdef VerboseQtWinAPI}
WriteLn('[WinAPI Invalidate Rect]');
{$endif}
//TODO: QWidget_update(TQtWidget(aHandle).Widget,Rect);
TQtWidget(aHandle).Update;
Result := True;
@ -1702,12 +2005,11 @@ begin
if not IsValidDC(DC) then Exit;
//TODO: check this brushorigin stuff, don't smell good.
// replace with DC local point.
TQtDeviceContext(DC).brushOrigin(@BrushPos);
TQtDeviceContext(DC).drawLine(
TQtDeviceContext(DC).Origin.X + BrushPos.X,
TQtDeviceContext(DC).Origin.Y + BrushPos.Y,
X, Y);
TQtDeviceContext(DC).drawLine( BrushPos.X, BrushPos.Y, X, Y);
MoveToEx(DC, X, Y, nil);
@ -1782,6 +2084,140 @@ begin
Result := 1;
end;
{------------------------------------------------------------------------------
Function: RestoreDC: Restore a previously saved DC state
Params:
DC: Handle to a DeviceContext
SavedDC: Index of saved state that needs to be restored
Returns: True if state was successfuly restored.
-------------------------------------------------------------------------------}
function TQtWidgetSet.RestoreDC(DC: HDC; SavedDC: Integer): Boolean;
var
DCData: PQtDCData;
begin
{$ifdef VerboseQTWinAPI}
WriteLn('Trace:> [WinAPI RestoreDC] DC=', dbghex(DC),' SavedDC=',SavedDC);
{$Endif}
// if SavedDC is positive, it represents the wished saved dc instance
// if SavedDC is negative, it's a relative number from last pushed state
Result := False;
if SavedDCList=nil then
begin
{$ifdef VerboseQTWinAPI}
WriteLn('Trace:< [WinAPI RestoreDC] there is no List yet, result=', result);
{$Endif}
exit;
end;
if SavedDC<0 then
SavedDC := SavedDC+SavedDCList.Count;
// check index
result := (SavedDC>0)and(SavedDC<SavedDCList.Count);
if result then
begin
if SavedDC<>SavedDCList.Count-1 then
DebugLn('WARNING: poping other than last saved DC from stack');
result := true;
while SavedDC>0 do
begin
DCData := PQtDcData(SavedDCList[SavedDC]);
SavedDCList.Delete(SAvedDC);
result := TQtDeviceContext(DC).RestoreDCData(DCData);
Dec(SavedDC);
end;
end;
{$ifdef VerboseQTWinAPI}
WriteLn('Trace:< [WinAPI RestoreDC]');
{$Endif}
end;
{------------------------------------------------------------------------------
Function: SaveDC: save DC state information to a stack
Params: DC
Returns: The index assigned to the or 0 if DC is not valid
-------------------------------------------------------------------------------}
function TQtWidgetSet.SaveDC(DC: HDC): Integer;
var
DCData: PQtDCData;
begin
{$ifdef VerboseQTWinAPI}
WriteLn('Trace:> [WinAPI SaveDC] DC=', dbghex(DC));
{$Endif}
result:=0;
if not IsValidDC(DC) then
begin
{$ifdef VerboseQTWinAPI}
WriteLn('Trace:< [WinAPI SaveDC] DC Invalid, result=', result);
{$Endif}
exit;
end;
if SavedDCList=nil then
begin
SavedDCList := TList.Create;
SavedDCList.Add(nil); // start at index 1, 0 is an invalid saved state
end;
DCData := TQtDeviceContext(Dc).CreateDCData;
result := SavedDCList.Add(DCData);
{$ifdef VerboseQTWinAPI}
WriteLn('Trace:< [WinAPI SaveDC] result=', result);
{$Endif}
end;
{------------------------------------------------------------------------------
Function: SelectClipRGN
Params: DC, RGN
Returns: longint
Sets the DeviceContext's ClipRegion. The Return value
is the new clip regions type, or ERROR.
The result can be one of the following constants
Error
NullRegion
SimpleRegion
ComplexRegion
------------------------------------------------------------------------------}
function TQtWidgetSet.SelectClipRGN(DC: hDC; RGN: HRGN): Longint;
var
ARegion: QRegionH;
Painter: QPainterH;
begin
result := ERROR;
if IsValidDC(DC) then
begin
Painter := TQtDeviceContext(DC).Widget;
QPainter_setClipRegion(Painter, TQtRegion(Rgn).Widget);
if QPainter_hasClipping(Painter) then
begin
// TODO: isNull is trated as isEmpty, is not right but isNull is not
// in the bindings, it's not also in QT documentation :(
// however in QT documentation for isEmpty, isNull is mentioned
ARegion := QRegion_Create;
QPainter_ClipRegion(Painter, ARegion);
if QRegion_isEmpty(ARegion) then
result := NULLREGION
else begin
result := SIMPLEREGION;
// TODO: test for complex region
end;
QRegion_Destroy(ARegion);
end else begin
result := NULLREGION;
end;
end;
end;
{------------------------------------------------------------------------------
Function: SelectObject
Params: none
@ -1797,7 +2233,7 @@ var
{$endif}
begin
{$ifdef VerboseQtWinAPI}
WriteLn('Trace:> [WinAPI SelectObject] DC=', dbgs(DC), ' GDIObj=', dbgs(GDIObj));
WriteLn('Trace:> [WinAPI SelectObject] DC=', dbghex(DC), ' GDIObj=', dbghex(GDIObj));
{$endif}
Result := 0;
@ -1832,6 +2268,15 @@ begin
TQtDeviceContext(DC).setFont(TQtFont(aObject));
end
else if aObject is TQtPen then
begin
{$ifdef VerboseQtWinAPI}
ObjType := 'Pen' ;
{$endif}
result := HGDIOBJ(TQtDeviceContext(DC).pen);
TQtDeviceContext(DC).setPen(TQtPen(aObject));
end
else if aObject is TQtBrush then
begin
{$ifdef VerboseQtWinAPI}
@ -1839,6 +2284,8 @@ begin
{$endif}
Result := HGDIOBJ(TQtDeviceContext(DC).brush);
TQtDeviceContext(DC).setBrush(TQtBrush(aObject));
end
else if aObject is TQtImage then
begin
@ -1847,15 +2294,65 @@ begin
{$endif}
Result := HGDIOBJ(TQtDeviceContext(DC).vImage);
// TODO: is this also saved in qpainter_save?
TQtDeviceContext(DC).vImage := TQtImage(aObject).Handle;
end;
{$ifdef VerboseQtWinAPI}
WriteLn('Trace:< [WinAPI SelectObject] Result=', dbgs(Result), ' ObjectType=', ObjType);
WriteLn('Trace:< [WinAPI SelectObject] Result=', dbghex(Result), ' ObjectType=', ObjType);
{$endif}
end;
{------------------------------------------------------------------------------
Function: SetCursorPos
Params: X:
Y:
Returns:
------------------------------------------------------------------------------}
function TQtWidgetSet.SetBKColor(DC: HDC; Color: TColorRef): TColorRef;
var
Brush: TQtBrush;
begin
{$ifdef VerboseQtWinAPI}
WriteLn('Trace:> [WinAPI SetBkColor] DC=', dbgs(DC), ' Color=', dbgs(Color));
{$endif}
Result := 0;
if not IsValidDC(DC) then
begin
{$ifdef VerboseQtWinAPI}
WriteLn('Trace:< [WinAPI SetBkColor] Invalid DC');
{$endif}
Exit;
end;
result := TQtDeviceContext(DC).SetBkColor(Color);
end;
function TQtWidgetSet.SetBkMode(DC: HDC; bkMode: Integer): Integer;
begin
{$ifdef VerboseQtWinAPI}
WriteLn('Trace:> [WinAPI SetBkMode] DC=', dbgs(DC), ' BkMode=', dbgs(bkMode));
{$endif}
Result := 0;
if not IsValidDC(DC) then
begin
{$ifdef VerboseQtWinAPI}
WriteLn('Trace:< [WinAPI SetBkMode] Invalid DC');
{$endif}
Exit;
end;
result := TQtDeviceContext(DC).SetBkMode(bkMode);
end;
{------------------------------------------------------------------------------
Function: SetCursorPos
Params: X:
@ -1874,6 +2371,23 @@ begin
Result := True;
end;
function TQtWidgetSet.SetFocus(hWnd: HWND): HWND;
var
Widget: QWidgetH;
begin
if hwnd<>0 then
begin
{$ifdef VerboseFocus}
WriteLn('********* TQtWidgetSet.SetFocus INIT focusing ', TQtWidget(hwnd).lclobject.name);
{$endif}
result := GetFocus;
QWidget_SetFocus(TQtWidget(hWnd).Widget);
{$ifdef VerboseFocus}
DebugLn('********* TQtWidgetSet.SetFocus END was %x now is %x',[result,hwnd]);
{$endif}
end;
end;
{------------------------------------------------------------------------------
Method: SetWindowOrgEx
Params: DC - handle of device context
@ -1894,15 +2408,45 @@ begin
if IsValidDC(DC) then
begin
TQtDeviceContext(DC).Origin.X := -NewX;
TQtDeviceContext(DC).Origin.Y := -NewY;
if OldPoint <> nil then OldPoint^ := TQtDeviceContext(DC).Origin;
GetWindowOrgEx(DC, OldPoint);
QPainter_translate(TQtDeviceContext(DC).Widget, -NewX, -NewY);
end;
Result := True;
end;
function TQtWidgetSet.SetProp(Handle: hwnd; Str: PChar; Data: Pointer
): Boolean;
begin
if Handle<>0 then
begin
TQtWidget(Handle).Props[str] := Data;
result:=(TQtWidget(Handle).Props[str]=Data);
{$ifdef VerboseQT}
DebugLn('[WinAPI SetProp win=%s str=%s data=%x',[dbgsname(TQtWidget(Handle)), str, ptrint(data)]);
{$endif}
end else
result:=False;
end;
function TQtWidgetSet.SetTextColor(DC: HDC; Color: TColorRef): TColorRef;
begin
{$ifdef VerboseQtWinAPI}
WriteLn('[WinAPI SetTextColor] DC: ', dbgs(DC));
{$endif}
result := CLR_INVALID;
if not IsValidDC(DC) then begin
{$ifdef VerboseQtWinAPI}
WriteLn('[WinAPI SetTextColor] Invalid DC');
{$endif}
exit;
end;
result := TQtDeviceContext(DC).vTextColor;
TQtDeviceContext(DC).vTextColor := ColorToRGB(Color); // be sure we get TColorRef
end;
{------------------------------------------------------------------------------
function ShowWindow(hWnd: HWND; nCmdShow: Integer): Boolean;
@ -1919,7 +2463,7 @@ begin
Result := False;
Widget := QWidgetH(hWnd);
Widget := TQTWidget(hWnd).Widget; //QWidgetH(hWnd);
// if Widget = nil then RaiseException('TQtWidgetSet.ShowWindow hWnd is nil');

View File

@ -45,15 +45,20 @@ function Ellipse(DC: HDC; x1, y1, x2, y2: Integer): Boolean; override;
function EndPaint(Handle: hwnd; var PS: TPaintStruct): Integer; override;
function ExtTextOut(DC: HDC; X, Y: Integer; Options: Longint; Rect: PRect; Str: PChar; Count: Longint; Dx: PInteger): Boolean; override;
function FillRect(DC: HDC; const Rect: TRect; Brush: HBRUSH): Boolean; override;
function GetBitmapRawImageDescription(Bitmap: HBITMAP; Desc: PRawImageDescription): Boolean; override;
function GetClientBounds(handle : HWND; var ARect : TRect) : Boolean; override;
function GetClientRect(handle : HWND; var ARect : TRect) : Boolean; override;
function GetClipBox(DC : hDC; lpRect : PRect) : Longint; override;
Function GetClipRGN(DC: hDC; RGN: hRGN): Longint; override;
function GetCursorPos(var lpPoint: TPoint ): Boolean; override;
function GetDeviceRawImageDescription(DC: HDC; Desc: PRawImageDescription): boolean; override;
function GetDeviceSize(DC: HDC; var P: TPoint): Boolean; Override;
function GetDC(hWnd: HWND): HDC; override;
function GetFocus: HWND; override;
function GetObject(GDIObj: HGDIOBJ; BufSize: Integer; Buf: Pointer): Integer; override;
function GetProp(Handle : hwnd; Str : PChar): Pointer; override;
function GetRawImageFromDevice(SrcDC: HDC; const SrcRect: TRect; var NewRawImage: TRawImage): boolean; override;
function GetRawImageFromBitmap(SrcBitmap, SrcMaskBitmap: HBITMAP; const SrcRect: TRect; var NewRawImage: TRawImage): boolean; Override;
function GetSysColor(nIndex: Integer): DWORD; override;
@ -61,6 +66,7 @@ function GetSystemMetrics(nIndex: Integer): Integer; override;
function GetTextColor(DC: HDC) : TColorRef; Override;
function GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer; var Size: TSize): Boolean; override;
function GetTextMetrics(DC: HDC; var TM: TTextMetric): Boolean; override;
Function GetWindowOrgEx(dc : hdc; P : PPoint): Integer; override;
function GetWindowRect(Handle: hwnd; var ARect: TRect): Integer; override;
function GetWindowRelativePosition(Handle: hwnd; var Left, Top: Integer): boolean; override;
function GetWindowSize(Handle: hwnd; var Width, Height: Integer): boolean; override;
@ -73,9 +79,17 @@ function MoveToEx(DC: HDC; X, Y: Integer; OldPoint: PPoint): Boolean; override;
function Rectangle(DC: HDC; X1, Y1, X2, Y2: Integer): Boolean; override;
function ReleaseDC(hWnd: HWND; DC: HDC): Integer; override;
function RestoreDC(DC: HDC; SavedDC: Integer): Boolean; override;
function SaveDC(DC: HDC): Integer; override;
Function SelectClipRGN(DC : hDC; RGN : HRGN) : Longint; override;
function SelectObject(DC: HDC; GDIObj: HGDIOBJ): HGDIOBJ; override;
function SetBKColor(DC: HDC; Color: TColorRef): TColorRef; override;
Function SetBkMode(DC: HDC; bkMode : Integer) : Integer; override;
function SetCursorPos(X, Y: Integer): Boolean; override;
function SetFocus(hWnd: HWND): HWND; override;
Function SetProp(Handle: hwnd; Str : PChar; Data : Pointer) : Boolean; override;
function SetTextColor(DC: HDC; Color: TColorRef): TColorRef; override;
function SetWindowOrgEx(DC : HDC; NewX, NewY : Integer; OldPoint: PPoint) : Boolean; override;
function ShowWindow(hWnd: HWND; nCmdShow: Integer): Boolean; override;
function StretchBlt(DestDC: HDC; X, Y, Width, Height: Integer;

View File

@ -30,7 +30,7 @@ uses
// Bindings
qt4, qtwidgets,
// LCL
SysUtils, Controls, LCLType, Forms, Graphics,
SysUtils, Controls, LCLType, LCLProc, Forms, Graphics,
// Widgetset
InterfaceBase, WSControls, WSLCLClasses;
@ -122,6 +122,9 @@ var
Method: TMethod;
Hook : QObject_hookH;
begin
{$ifdef VerboseQt}
WriteLn('> TQtWSWinControl.CreateHandle for ',dbgsname(AWinControl));
{$endif}
QtWidget := TQtWidget.Create(AWinControl, AParams);
// Various Events
@ -137,7 +140,7 @@ begin
Result := THandle(QtWidget);
{$ifdef VerboseQt}
WriteLn('TQtWSWinControl.CreateHandle Result: ', IntToStr(Result));
WriteLn('< TQtWSWinControl.CreateHandle for ',dbgsname(AWinControl),' Result: ', dbgHex(Result));
{$endif}
end;

View File

@ -27,14 +27,11 @@ unit QtWSGrids;
interface
uses
////////////////////////////////////////////////////
// I M P O R T A N T
////////////////////////////////////////////////////
// To get as little as posible circles,
// uncomment only when needed for registration
////////////////////////////////////////////////////
// Grids,
////////////////////////////////////////////////////
// Bindings
qt4, qtwidgets,
// LCL
LCLType, LCLProc, Controls, Grids,
// Widgetset
WSGrids, WSLCLClasses;
type
@ -87,4 +84,4 @@ initialization
// RegisterWSComponent(TDrawGrid, TQtWSDrawGrid);
// RegisterWSComponent(TStringGrid, TQtWSStringGrid);
////////////////////////////////////////////////////
end.
end.

View File

@ -920,7 +920,7 @@ begin
// Focus
QWidget_setFocusPolicy(QtCheckBox.Widget, QtStrongFocus);
//QWidget_setFocusPolicy(QtCheckBox.Widget, QtStrongFocus);
// Returns the Handle
@ -1038,7 +1038,7 @@ begin
// Focus
QWidget_setFocusPolicy(QtRadioButton.Widget, QtStrongFocus);
//QWidget_setFocusPolicy(QtRadioButton.Widget, QtStrongFocus);
// Returns the Handle