diff options
Diffstat (limited to 'examples/apps')
40 files changed, 0 insertions, 9736 deletions
diff --git a/examples/apps/uidesigner/anchors.inc b/examples/apps/uidesigner/anchors.inc deleted file mode 100644 index 0c9b3738..00000000 --- a/examples/apps/uidesigner/anchors.inc +++ /dev/null @@ -1,208 +0,0 @@ - -Const - vfd_anchorright : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255, 14, 14, 14,255, 0,255,255, 0,255,227,170,131, - 225,165,125,222,159,119,220,155,114,218,150,108,216,144,103,214,140, - 98,213,134, 93,212,133, 90,210,131, 88,210,131, 88,210,131, 88,255, - 0,255, 22, 22, 22,255, 0,255,255, 0,255,229,176,137,234,192,162, - 233,189,158,232,185,154,230,181,150,228,177,146,227,173,141,225,169, - 137,223,165,134,222,163,131,221,160,128,210,131, 88,255, 0,255, 31, - 31, 31,255, 0,255,255, 0,255,230,179,140,236,196,166,235,194,163, - 234,191,160,232,188,157,231,184,153,229,180,148,228,175,145,226,172, - 140,225,168,136,223,165,133,212,133, 90,255, 0,255, 43, 43, 43,255, - 0,255,255, 0,255,230,179,140,236,197,167,236,197,167,235,196,165, - 235,193,163,234,190,160,232,186,156,230,182,151,228,179,147,227,175, - 143,225,170,139,214,140, 98,255, 0,255, 54, 54, 54,255, 0,255,255, - 0,255,230,179,140,230,179,140,230,179,140,230,179,140,230,179,140, - 229,176,137,227,172,133,226,169,128,225,163,123,222,158,117,220,153, - 112,218,148,106,255, 0,255, 67, 67, 67,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 80, 80, 80,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,245,197,167,245,195,163,245,192,159,245,190,155, - 243,187,153,243,184,149,243,183,146,243,182,144,243,182,142,255, 0, - 255, 92, 92, 92,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,245,200,171,247,211,188,247,210,186,247,207,182,247,205,180, - 246,203,177,246,202,174,246,200,172,243,182,144,255, 0,255,104,104, - 104,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,245, - 203,174,247,213,192,247,211,189,247,210,186,247,208,184,247,206,180, - 246,204,178,246,203,175,243,184,148,255, 0,255,116,116,116,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,245,203,175,247, - 215,194,247,213,192,247,212,190,247,210,187,247,209,184,247,207,181, - 246,205,179,243,187,150,255, 0,255,127,127,127,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,245,203,175,245,203,175,245, - 203,175,245,201,172,245,200,170,245,197,167,245,195,163,245,192,159, - 245,190,155,255, 0,255,137,137,137,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,145,145,145,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - -Const - vfd_anchorbottom : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,165,165,165,158,158,158,149,149,149,141,141,141,131,131, - 131,121,121,121,111,111,111,101,101,101, 91, 91, 91, 82, 82, 82, 73, - 73, 73, 65, 65, 65, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 243,187,150,243,184,149,243,184,146,243,183,145,243,182,144,255, 0, - 255,213,134, 94,212,133, 90,210,131, 88,210,131, 88,210,131, 88,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,243,188,154, - 246,203,176,246,202,175,246,201,173,243,183,146,255, 0,255,214,140, - 98,223,165,133,222,162,131,222,161,129,210,131, 88,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,245,191,157,247,205,179, - 246,204,177,246,203,175,243,184,149,255, 0,255,217,145,103,225,168, - 136,223,165,133,223,163,131,212,133, 90,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,245,193,161,247,207,182,247,205,180, - 246,204,178,243,187,153,255, 0,255,218,150,110,226,172,141,225,169, - 138,224,167,134,213,136, 94,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,245,196,165,247,209,184,247,207,182,247,206,180, - 245,190,155,255, 0,255,221,157,115,228,177,145,227,173,142,225,170, - 139,216,141, 99,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,245,197,167,247,210,187,247,209,186,247,208,184,245,192,159, - 255, 0,255,224,162,121,230,181,150,228,178,146,227,175,143,217,146, - 104,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,245, - 200,171,247,212,189,247,211,188,247,210,186,245,195,162,255, 0,255, - 225,167,127,232,185,154,230,182,151,229,179,148,220,150,111,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,245,201,172,247, - 213,192,247,213,190,247,211,189,245,197,166,255, 0,255,227,172,132, - 233,189,158,232,186,156,230,184,152,221,157,116,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,245,203,175,245,203,174,245, - 200,172,245,200,171,245,199,170,255, 0,255,229,176,136,235,192,162, - 234,190,160,232,187,157,225,162,123,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,230,179,140,235,196,165,235,194,163, - 234,191,161,226,169,128,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,230,179,140,236,197,167,235,196,165,235,194,163, - 227,172,133,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,230,179,140,230,179,140,230,179,140,230,178,140,229,176,137, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - -Const - vfd_anchorleft : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 14, 14, 14,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 22, 22, 22, - 255, 0,255,227,170,131,225,165,125,222,159,119,220,155,114,218,150, - 108,216,144,103,214,140, 98,213,134, 93,212,133, 90,210,131, 88,210, - 131, 88,210,131, 88,255, 0,255,255, 0,255, 31, 31, 31,255, 0,255, - 229,176,137,234,192,162,233,189,158,232,185,154,230,181,150,228,177, - 146,227,173,141,225,169,137,223,165,134,222,163,131,221,160,128,210, - 131, 88,255, 0,255,255, 0,255, 43, 43, 43,255, 0,255,230,179,140, - 236,196,166,235,194,163,234,191,160,232,188,157,231,184,153,229,180, - 148,228,175,145,226,172,140,225,168,136,223,165,133,212,133, 90,255, - 0,255,255, 0,255, 54, 54, 54,255, 0,255,230,179,140,236,197,167, - 236,197,167,235,196,165,235,193,163,234,190,160,232,186,156,230,182, - 151,228,179,147,227,175,143,225,170,139,214,140, 98,255, 0,255,255, - 0,255, 67, 67, 67,255, 0,255,230,179,140,230,179,140,230,179,140, - 230,179,140,230,179,140,229,176,137,227,172,133,226,169,128,225,163, - 123,222,158,117,220,153,112,218,148,106,255, 0,255,255, 0,255, 80, - 80, 80,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 92, 92, 92,255, - 0,255,245,197,167,245,195,163,245,192,159,245,190,155,243,187,153, - 243,184,149,243,183,146,243,182,144,243,182,142,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,104,104,104,255, 0,255,245, - 200,171,247,211,188,247,210,186,247,207,182,247,205,180,246,203,177, - 246,202,174,246,200,172,243,182,144,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,116,116,116,255, 0,255,245,203,174,247, - 213,192,247,211,189,247,210,186,247,208,184,247,206,180,246,204,178, - 246,203,175,243,184,148,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,127,127,127,255, 0,255,245,203,175,247,215,194,247, - 213,192,247,212,190,247,210,187,247,209,184,247,207,181,246,205,179, - 243,187,150,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,137,137,137,255, 0,255,245,203,175,245,203,175,245,203,175,245, - 201,172,245,200,170,245,197,167,245,195,163,245,192,159,245,190,155, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,145,145, - 145,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - -Const - vfd_anchortop : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,213,134, 94,212,133, 90,210,131, 88,210, - 131, 88,210,131, 88,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,214,140, 98,223,165,133,222,162,131,222,161,129,210, - 131, 88,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,217,145,103,225,168,136,223,165,133,223,163,131,212,133, 90,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,243,187,150, - 243,184,149,243,184,146,243,183,145,243,182,144,255, 0,255,218,150, - 110,226,172,141,225,169,138,224,167,134,213,136, 94,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,243,188,154,246,203,176, - 246,202,175,246,201,173,243,183,146,255, 0,255,221,157,115,228,177, - 145,227,173,142,225,170,139,216,141, 99,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,245,191,157,247,205,179,246,204,177, - 246,203,175,243,184,149,255, 0,255,224,162,121,230,181,150,228,178, - 146,227,175,143,217,146,104,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,245,193,161,247,207,182,247,205,180,246,204,178, - 243,187,153,255, 0,255,225,167,127,232,185,154,230,182,151,229,179, - 148,220,150,111,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,245,196,165,247,209,184,247,207,182,247,206,180,245,190,155, - 255, 0,255,227,172,132,233,189,158,232,186,156,230,184,152,221,157, - 116,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,245, - 197,167,247,210,187,247,209,186,247,208,184,245,192,159,255, 0,255, - 229,176,136,235,192,162,234,190,160,232,187,157,225,162,123,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,245,200,171,247, - 212,189,247,211,188,247,210,186,245,195,162,255, 0,255,230,179,140, - 235,196,165,235,194,163,234,191,161,226,169,128,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,245,201,172,247,213,192,247, - 213,190,247,211,189,245,197,166,255, 0,255,230,179,140,236,197,167, - 235,196,165,235,194,163,227,172,133,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,245,203,175,245,203,174,245,200,172,245, - 200,171,245,199,170,255, 0,255,230,179,140,230,179,140,230,179,140, - 230,178,140,229,176,137,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,165,165, - 165,158,158,158,149,149,149,141,141,141,131,131,131,121,121,121,111, - 111,111,101,101,101, 91, 91, 91, 82, 82, 82, 73, 73, 73, 65, 65, 65, - 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); diff --git a/examples/apps/uidesigner/extrafpc.cfg b/examples/apps/uidesigner/extrafpc.cfg deleted file mode 100644 index 073dc4b6..00000000 --- a/examples/apps/uidesigner/extrafpc.cfg +++ /dev/null @@ -1,5 +0,0 @@ --FUunits --Fu../../../lib --Xs --XX --CX diff --git a/examples/apps/uidesigner/icons.inc b/examples/apps/uidesigner/icons.inc deleted file mode 100644 index 71d8542b..00000000 --- a/examples/apps/uidesigner/icons.inc +++ /dev/null @@ -1,2086 +0,0 @@ - -Const - stdimg_vfd_checkbox : Array[0..773] of byte = ( - 66, 77, 6, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 15, 0, 0, 0, 15, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 208, 2, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0, - 27, 55,229, 27, 55,229,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 27, 55,229, 0, 0, 0, 27, 55,229, - 128,128,128, 0, 0, 0,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,255,255,255, 27, 55,229, 0, 0, 0, 27, 55,229,128,128,128, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,200,208,212,255, - 255,255, 27, 55,229, 0, 0, 0, 27, 55,229,128,128,128, 0, 0, 0, - 255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, - 255, 0, 0, 0, 0, 0, 0,255,255,255,200,208,212,255,255,255, 27, - 55,229, 0, 0, 0, 27, 55,229,128,128,128, 0, 0, 0,255,255,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,200,208,212,255,255,255, 27, 55,229, 0, - 0, 0, 27, 55,229,128,128,128, 0, 0, 0,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, - 255,255,255,255,200,208,212,255,255,255, 27, 55,229, 0, 0, 0, 27, - 55,229,128,128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,200,208,212,255,255,255, 27, 55,229, 0, 0, 0, 27, 55,229,128, - 128,128, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,200,208, - 212,255,255,255, 27, 55,229, 0, 0, 0, 27, 55,229,128,128,128, 0, - 0, 0,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,200,208,212,255,255, - 255, 27, 55,229, 0, 0, 0, 27, 55,229,128,128,128, 0, 0, 0,255, - 255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0,255,255,255,200,208,212,255,255,255, 27, 55, - 229, 0, 0, 0, 27, 55,229,128,128,128, 0, 0, 0,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,200,208,212,255,255,255, 27, 55,229, 0, 0, - 0, 27, 55,229,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,200,208,212,255,255,255, 27, 55,229, 0, 0, 0, 27, 55, - 229,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128, 27, 55,229, 27, 55,229, 0, 0, 0, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 0, 0, 0); - -Const - stdimg_vfd_edit : Array[0..1421] of byte = ( - 66, 77,142, 5, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 25, 0, 0, 0, 18, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 88, 5, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 27, 55,229,128,128,128, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 27, 55, - 229, 0, 27, 55,229,128,128,128, 0, 0, 0,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,255,255,255, 27, 55,229, 0, 27, 55,229,128,128,128, 0, - 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,200,208,212,255,255,255, 27, 55,229, - 0, 27, 55,229,128,128,128, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,200, - 208,212,255,255,255, 27, 55,229, 0, 27, 55,229,128,128,128, 0, 0, - 0,255,255,255,255,255,255,255,255,255,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,255,255,255,128, 0, 0,128, 0, 0,128, 0, 0, - 128, 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,200,208,212,255,255,255, 27, 55,229, 0, - 27, 55,229,128,128,128, 0, 0, 0,255,255,255,255,255,255,128, 0, - 0,128, 0, 0,255,255,255,128, 0, 0,128, 0, 0,255,255,255,128, - 0, 0,128, 0, 0,255,255,255,128, 0, 0,128, 0, 0,255,255,255, - 255,255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,200,208, - 212,255,255,255, 27, 55,229, 0, 27, 55,229,128,128,128, 0, 0, 0, - 255,255,255,255,255,255,128, 0, 0,128, 0, 0,255,255,255,128, 0, - 0,128, 0, 0,255,255,255,128, 0, 0,128, 0, 0,255,255,255,128, - 0, 0,128, 0, 0,255,255,255,255,255,255, 0, 0, 0,255,255,255, - 255,255,255,255,255,255,200,208,212,255,255,255, 27, 55,229, 0, 27, - 55,229,128,128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,255,255,255,128, 0, - 0,128, 0, 0,255,255,255,128, 0, 0,128, 0, 0,255,255,255,255, - 255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,200,208,212, - 255,255,255, 27, 55,229, 0, 27, 55,229,128,128,128, 0, 0, 0,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,128, 0, 0, - 128, 0, 0,255,255,255,128, 0, 0,128, 0, 0,255,255,255,128, 0, - 0,128, 0, 0,255,255,255,255,255,255, 0, 0, 0,255,255,255,255, - 255,255,255,255,255,200,208,212,255,255,255, 27, 55,229, 0, 27, 55, - 229,128,128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255,128, - 0, 0,128, 0, 0,128, 0, 0,255,255,255,255,255,255,128, 0, 0, - 128, 0, 0,128, 0, 0,128, 0, 0,255,255,255,255,255,255,255,255, - 255, 0, 0, 0,255,255,255,255,255,255,255,255,255,200,208,212,255, - 255,255, 27, 55,229, 0, 27, 55,229,128,128,128, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,128, 0, 0,128, 0, 0,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, - 255,255,255,255,200,208,212,255,255,255, 27, 55,229, 0, 27, 55,229, - 128,128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,128, 0, 0,128, - 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 0, 0, 0,255,255,255,255,255,255,255,255,255,200,208,212,255,255, - 255, 27, 55,229, 0, 27, 55,229,128,128,128, 0, 0, 0,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0, - 255,255,255,200,208,212,255,255,255, 27, 55,229, 0, 27, 55,229,128, - 128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,200,208,212,255,255,255, - 27, 55,229, 0, 27, 55,229,128,128,128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,255,255,255, 27, 55,229, 0, 27, 55,229,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 27, - 55,229, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 0); - -Const - stdimg_vfd_memo : Array[0..1173] of byte = ( - 66, 77,150, 4, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 18, 0, 0, 0, 20, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 96, 4, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 0, 0, 27, 55,229,128,128,128, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 55,229, 0, 0, 27, 55,229,128, - 128,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55,229, 0, - 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 27, 55,229, 0, 0, 27, 55,229,128,128,128,255,255,255,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, - 255,255,255, 0, 0, 0, 27, 55,229, 0, 0, 27, 55,229,128,128,128, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55,229, 0, 0, 27, - 55,229,128,128,128,255,255,255,128, 0, 0,128, 0, 0,128, 0, 0, - 128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, - 0,128, 0, 0,128, 0, 0,255,255,255,255,255,255, 0, 0, 0, 27, - 55,229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255, 0, 0, 0, 27, 55,229, 0, 0, 27, 55,229,128,128,128,255,255, - 255,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, - 128, 0, 0,255,255,255, 0, 0, 0, 27, 55,229, 0, 0, 27, 55,229, - 128,128,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55,229, - 0, 0, 27, 55,229,128,128,128,255,255,255,128, 0, 0,128, 0, 0, - 128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,255,255,255,255,255,255, 0, - 0, 0, 27, 55,229, 0, 0, 27, 55,229,128,128,128,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255, 0, 0, 0, 27, 55,229, 0, 0, 27, 55,229,128,128, - 128,255,255,255,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, - 128, 0, 0,128, 0, 0,255,255,255, 0, 0, 0, 27, 55,229, 0, 0, - 27, 55,229,128,128,128,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 27, 55,229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 0, 0, 0, 27, 55,229, 0, 0, 27, 55,229,128,128,128,255, - 255,255,128, 0, 0,128, 0, 0,128, 0, 0,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255, 0, 0, 0, 27, 55,229, 0, 0, 27, 55, - 229,128,128,128,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 0, 0, 0, 27, 55,229, 0, 0, 27, 55,229,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128, 27, 55,229, 0, 0, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, - 0); - -Const - stdimg_vfd_button : Array[0..1005] of byte = ( - 66, 77,238, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 22, 0, 0, 0, 14, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 184, 3, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55,229, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212, 0, 0, 0, 0, 0, 0,200, - 208,212,200,208,212, 0, 0, 0,200,208,212, 0, 0, 0,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212, 0, 0, 0,200,208,212,200,208,212, 0, - 0, 0,200,208,212, 0, 0, 0,200,208,212, 0, 0, 0,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212, 0, 0, 0,200,208,212,200,208,212, 0, - 0, 0,200,208,212, 0, 0, 0,200,208,212, 0, 0, 0,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212, 0, 0, 0,200,208,212,200,208,212, 0, - 0, 0,200,208,212, 0, 0, 0, 0, 0, 0,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212, 0, 0, 0,200,208,212,200,208,212, 0, - 0, 0,200,208,212, 0, 0, 0,200,208,212, 0, 0, 0,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212, 0, 0, 0, 0, 0, 0,200, - 208,212,200,208,212, 0, 0, 0,200,208,212, 0, 0, 0,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128, 27, 55,229, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 0, 0); - -Const - stdimg_vfd_combobox : Array[0..1413] of byte = ( - 66, 77,134, 5, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 22, 0, 0, 0, 20, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 80, 5, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255, - 255,255,255,255,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, - 128, 0, 0,128, 0, 0,255,255,255,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255, - 255,255,255,255,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, - 128, 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, - 128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,128, 0, - 0,128, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,128, 0, 0,128, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, - 128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255, - 255,255,255,255,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, - 128, 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255, - 255,255,255,255,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, - 128, 0, 0,128, 0, 0,255,255,255,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 200,208,212,200,208,212,200,208,212,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 255,255,255,128,128,128,128,128,128,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,128, 0, 0,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,255,255,255, 0, 0, 0, - 255,255,255, 0, 0, 0, 0, 0, 0,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 255,255,255,255,255,255,255,255,255,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 0, 0); - -Const - stdimg_vfd_listbox : Array[0..1481] of byte = ( - 66, 77,202, 5, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 22, 0, 0, 0, 21, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 148, 5, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 200,208,212,200,208,212,200,208,212,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 255,255,255,128,128,128,128,128,128,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 255,255,255, 0, 0, 0, 0, 0, 0,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,255,255,255,255,255,255, 0, 0, 0, - 255,255,255,255,255,255,255,255,255,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 255,255,255,200,208,212,255,255,255,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,128, 0, 0,128, 0, 0,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, 0, 0, 0, - 200,208,212,255,255,255,200,208,212,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,128, 0, 0,128, 0, 0,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,128, 0, 0,128, 0, 0, 0, 0, 0, - 255,255,255,200,208,212,255,255,255,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,128, 0, 0,128, 0, 0,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, 0, 0, 0, - 200,208,212,255,255,255,200,208,212,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 255,255,255,200,208,212,255,255,255,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 200,208,212,255,255,255,200,208,212,255,255,255, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,255,255,255,255,255,255, 0, 0, 0, - 255,255,255,200,208,212,255,255,255,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 200,208,212,200,208,212,200,208,212,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 255,255,255, 0, 0, 0, 0, 0, 0,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, - 0, 0,128, 0, 0,128, 0, 0,255,255,255,255,255,255, 0, 0, 0, - 255,255,255,128,128,128,128,128,128,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 255,255,255,255,255,255,255,255,255,200,208,212, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 0, 0); - -Const - stdimg_vfd_panel : Array[0..1549] of byte = ( - 66, 77, 14, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 22, 0, 0, 0, 22, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 216, 5, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,200,208,212,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,200,208,212,255,255,255, 27, 55, - 229, 0, 0, 27, 55,229,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128, 27, 55,229, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 0, 0); - -Const - stdimg_vfd_label : Array[0..837] of byte = ( - 66, 77, 70, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 18, 0, 0, 0, 14, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 16, 3, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 0, 0, 27, 55,229, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,128,128, 27, 55,229, 0, 0, 27, 55,229, 27, - 55,229, 0, 0, 0, 0, 0, 0,128,128,128, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229,128,128, - 128, 0, 0, 0, 0, 0, 0,128,128,128, 27, 55,229, 27, 55,229, 0, - 0, 27, 55,229, 27, 55,229,128,128,128, 0, 0, 0, 0, 0, 0, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55,229, 27, 55, - 229, 27, 55,229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, - 0, 0, 0, 0,128,128,128, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229,128,128,128, 0, 0, 0, 0, 0, 0,128,128,128, - 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 27, 55,229, 27, 55,229, - 27, 55,229,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0, 0, 0, 0, - 128,128,128, 27, 55,229, 27, 55,229, 27, 55,229,128,128,128, 0, 0, - 0, 0, 0, 0,128,128,128, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229,128, - 128,128, 0, 0, 0, 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 0, 0, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 0, 0, 0, 0, 0, 0,128,128,128, 27, - 55,229,128,128,128, 0, 0, 0, 0, 0, 0,128,128,128, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229,128,128,128, 0, 0, - 0, 0, 0, 0, 27, 55,229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,128,128, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229,128,128,128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 0, 0); - -Const - stdimg_vfd_scrollbar : Array[0..773] of byte = ( - 66, 77, 6, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 24, 0, 0, 0, 10, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 208, 2, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55,229, 27, 55, - 229,128,128,128,200,208,212,200,208,212,200,208,212,200,208,212, 0, - 0, 0,200,208,212,200,208,212,200,208,212,200,208,212, 0, 0, 0, - 255,255,255,200,208,212,255,255,255,200,208,212,255,255,255, 0, 0, - 0,200,208,212,200,208,212,200,208,212,200,208,212, 0, 0, 0, 27, - 55,229, 27, 55,229,128,128,128,255,255,255,128,128,128,128,128,128, - 200,208,212, 0, 0, 0,255,255,255,200,208,212,200,208,212,200,208, - 212, 0, 0, 0,200,208,212,255,255,255,200,208,212,255,255,255,200, - 208,212, 0, 0, 0,255,255,255,128,128,128,128,128,128,200,208,212, - 0, 0, 0, 27, 55,229, 27, 55,229,128,128,128,255,255,255, 0, 0, - 0, 0, 0, 0,200,208,212, 0, 0, 0,255,255,255,200,208,212,200, - 208,212,200,208,212, 0, 0, 0,255,255,255,200,208,212,255,255,255, - 200,208,212,255,255,255, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, - 0,200,208,212, 0, 0, 0, 27, 55,229, 27, 55,229,128,128,128,255, - 255,255,255,255,255,255,255,255,200,208,212, 0, 0, 0,255,255,255, - 255,255,255,255,255,255,200,208,212, 0, 0, 0,200,208,212,255,255, - 255,200,208,212,255,255,255,200,208,212, 0, 0, 0,255,255,255,255, - 255,255,255,255,255,200,208,212, 0, 0, 0, 27, 55,229, 27, 55,229, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229); - -Const - stdimg_vfd_arrow : Array[0..701] of byte = ( - 66, 77,190, 2, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 12, 0, 0, 0, 18, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 136, 2, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0, 0, 0, 0, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255,255,255,255,255, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255,255,255, - 255,255, 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0, - 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255,255,255,255, - 255, 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, - 0, 0, 0, 0, 0, 27, 55,229, 27, 55,229, 0, 0, 0,255,255,255, - 255,255,255, 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255, - 255,255, 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255, 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 27, 55,229, 27, 55,229, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, 0,255, - 255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 0, 0, - 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 0, 0, 0,255,255,255, 0, 0, 0, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 0, 0, 0, 0, 0, 0, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229); - -Const - stdimg_vfd_dbgrid : Array[0..1549] of byte = ( - 66, 77, 14, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 22, 0, 0, 0, 22, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 216, 5, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 0, 0, - 0,200,208,212, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,200,208,212,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 0, 0, - 0,255,255,255, 0, 0, 0,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, 0, 0, - 0, 0, 0, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 0, 0, - 0,200,208,212, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,200,208,212,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 0, 0, - 0,255,255,255, 0, 0, 0,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, 0, 0, - 0, 0, 0, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 0, 0, - 0,200,208,212, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,200,208,212,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 0, 0, - 0,255,255,255, 0, 0, 0,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, 0, 0, - 0, 0, 0, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 0, 0, - 0,200,208,212, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,200,208,212,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 0, 0, - 0,255,255,255, 0, 0, 0,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, 0, 0, - 0, 0, 0, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 0, 0, - 0,200,208,212, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,200,208,212,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, - 0,200,208,212, 0, 0, 0,255,255,255,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,255,255,255,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, 0, 0, - 0, 0, 0,128,128,128,200,208,212,128,128,128,255,255,255, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,128,128,128,255,255,255,128,128,128,255,255,255,200,208, - 212,200,208,212,255,255,255,200,208,212,255,255,255,200,208,212,200, - 208,212,200,208,212,200,208,212,255,255,255,128,128,128, 34, 34,217, - 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34, - 217, 0, 0,128,128,128,200,208,212,128,128,128,255,255,255,255,255, - 255,255,255,255,255,255,255,200,208,212,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,128,128,128, 34, 34,217, - 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34, - 217, 0, 0,128,128,128,255,255,255,128,128,128,255,255,255,200,208, - 212,200,208,212,255,255,255,200,208,212,255,255,255,200,208,212,200, - 208,212,200,208,212,255,255,255,255,255,255,128,128,128, 34, 34,217, - 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34, - 217, 0, 0,128,128,128,200,208,212,128,128,128,255,255,255,255,255, - 255,255,255,255,255,255,255,200,208,212,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,128,128,128, 34, 34,217, - 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34, - 217, 0, 0,128,128,128,255,255,255,128,128,128,255,255,255,200,208, - 212,200,208,212,255,255,255,200,208,212,255,255,255,200,208,212,200, - 208,212,200,208,212,200,208,212,255,255,255,128,128,128, 34, 34,217, - 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34, - 217, 0, 0,128,128,128,200,208,212,128,128,128,255,255,255,255,255, - 255,255,255,255,255,255,255,200,208,212,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,128,128,128, 34, 34,217, - 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34, - 217, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128, 34, 34,217, - 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34, - 217, 0, 0,128,128,128,200,208,212,128,128,128,255,255,255,200,208, - 212,200,208,212,200,208,212,200,208,212,255,255,255,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,128,128,128, 34, 34,217, - 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34, - 217, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128, 34, 34,217, - 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34,217, 34, 34, - 217, 0, 0); - -Const - stdimg_vfd_other : Array[0..1549] of byte = ( - 66, 77, 14, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 22, 0, 0, 0, 22, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 216, 5, 0, 0,195, 10, 0, 0,195, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192,192, - 224,192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192,192, - 224,192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192, 0, - 0, 0, 0, 0, 0,192,224,192,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192, 0, - 0, 0, 0, 0, 0,192,224,192,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192,192, - 224,192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192,192, - 224,192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192, 0, - 0, 0, 0, 0, 0,192,224,192,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192, 0, - 0, 0, 0, 0, 0,192,224,192,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192,192, - 224,192, 10, 25, 10, 0, 0, 0,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192,192, - 224,192,192,224,192, 19, 47, 19, 0, 0, 0,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192,192, - 224,192,192,224,192,192,224,192, 0, 0, 0, 15, 39, 15,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192,192, - 224,192,192,224,192,192,224,192, 0, 0, 0, 1, 4, 1,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192, 21, 53, 21,192,224,192,192, - 224,192,192,224,192, 34, 85, 34, 0, 0, 0, 8, 20, 8,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192, 19, 47, 19, 4, - 10, 4, 1, 4, 1, 13, 34, 13,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192,192, - 224,192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192,192, - 224,192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0,192,224,192,192,224,192,192,224, - 192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192,192, - 224,192,192,224,192,192,224,192,192,224,192,192,224,192,192,224,192, - 192,224,192,192,224,192,192,224,192,192,224,192, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 55, - 229, 0, 0, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, - 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, - 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55,229, 27, 55, - 229, 0, 0); - - - -Const - stdimg_vfd_progressbar : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, - 0,132,132,132,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 0, 0, 0,132,132,132,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255,255,255, 0, 0, 0,132,132,132,255, 0,255,255, 0, - 0,255, 0, 0,255, 0, 0,255, 0,255,255, 0, 0,255, 0, 0,255, - 0, 0,255, 0,255,255, 0, 0,255, 0, 0,255, 0, 0,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255,255,255, 0, 0, 0,132,132,132,255, - 0,255,255, 0, 0,255, 0, 0,255, 0, 0,255, 0,255,255, 0, 0, - 255, 0, 0,255, 0, 0,255, 0,255,255, 0, 0,255, 0, 0,255, 0, - 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255,255,255, 0, 0, 0, - 132,132,132,255, 0,255,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, - 255,255, 0, 0,255, 0, 0,255, 0, 0,255, 0,255,255, 0, 0,255, - 0, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,255, - 255, 0, 0, 0,132,132,132,255, 0,255,255, 0, 0,255, 0, 0,255, - 0, 0,255, 0,255,255, 0, 0,255, 0, 0,255, 0, 0,255, 0,255, - 255, 0, 0,255, 0, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255,255,255, 0, 0, 0,132,132,132,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255,255,255, 0, 0, 0,132,132,132,132,132, - 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, - 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, - 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, - 132,132,132,132,132,132,132,132,132,132,132,132,132, 0, 0, 0,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - -Const - stdimg_vfd_trackbar : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255, 0, 0, 0,255, 0,255,255, 0, - 255, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, - 0,255, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0,255, - 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0, - 255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, - 0,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, - 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,132,132,132,132, - 132,132, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,132,132,132, - 198,198,198,198,198,198,132,132,132, 0, 0, 0,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,255, - 255,198,198,198,198,198,198,198,198,198,198,198,198,132,132,132, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255, 0, 0, 0,255, 0,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,198,198,198,198,198,198,198,198,198,198,198,198, - 132,132,132, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 0,255, 0, 0, 0,255, 0,255,132,132,132,198,198,198, - 198,198,198,198,198,198,255,255,255,198,198,198,198,198,198,198,198, - 198,198,198,198,132,132,132, 0, 0, 0,198,198,198,198,198,198,198, - 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198, - 198,198,198,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,132,132, - 132,132,132,132,132,132,132,132,132,132,255,255,255,198,198,198,198, - 198,198,198,198,198,198,198,198,132,132,132, 0, 0, 0,132,132,132, - 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, - 132,132,132,132,132,132,132,132,132,132,255, 0,255, 0, 0, 0,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,255,255, - 198,198,198,198,198,198,198,198,198,198,198,198,132,132,132, 0, 0, - 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255,255,255,198,198,198,198,198,198,198,198,198,198,198,198,132, - 132,132, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - -Const - stdimg_vfd_gauge : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0,132,132,132,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,132,132,132, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,255,255, 0, 0, - 0,132,132,132,255, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, - 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, - 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 255,255, 0, 0, 0,132,132,132,255, 0,255, 0, 0,255, 0, 0,255, - 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0, - 255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, - 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, - 255, 0,255,255,255,255, 0, 0, 0,132,132,132,255, 0,255, 0, 0, - 255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, - 0,255, 0, 0,255, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,255, 0, 0,255, 0, 0,255, 0, 0, 0,255, 0,255, 0, 0, - 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0,132,132,132,255, - 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, - 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0, - 255, 0, 0,255, 0, 0, 0, 0, 0,255, 0, 0,255,255, 0,255, 0, - 0, 0,255, 0,255, 0, 0, 0,255, 0,255,255,255,255, 0, 0, 0, - 132,132,132,255, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0, - 255, 0, 0,255, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0,255, 0, 0,255, - 0, 0, 0,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255,255, - 255, 0, 0, 0,132,132,132,255, 0,255, 0, 0,255, 0, 0,255, 0, - 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0, 0, - 0, 0,255, 0, 0, 0, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0, - 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0,255, - 0,255,255,255,255, 0, 0, 0,132,132,132,255, 0,255, 0, 0,255, - 0, 0,255, 0, 0,255, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 0, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255,255,255, 0, 0, 0,132,132,132,255, 0, - 255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, - 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, - 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255,255,255, 0, 0, 0,132, - 132,132,255, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, - 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0, - 255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,255,255, - 0, 0, 0,132,132,132,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255,255,255, 0, 0, 0,132,132,132,132,132,132,132,132,132,132, - 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, - 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, - 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, - 132,132,132,132,132,132,132,132, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - -Const - stdimg_vfd_menubar : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,126,124, - 123, 17, 7, 7, 21, 0, 0, 25, 0, 0, 21, 0, 0, 27, 6, 8, 20, - 4, 5, 12, 0, 0, 12, 4, 5, 11, 6, 7, 0, 0, 1,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, - 0,255,134,130,129,255,246,244,255,251,252,255,250,252,255,251,252, - 255,244,244,255,245,247,255,252,254,255,242,244,255,254,255, 5, 0, - 2,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, - 255, 0,255,255, 0,255,142,135,132,255,253,252, 48, 11, 13, 47, 4, - 7, 52, 9, 12, 52, 13, 15,255,250,254,255,251,254,255,250,253,255, - 250,252, 7, 0, 3,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, - 0,255, 0,255,255, 0,255,255, 0,255,125,116,113,255,252,252,255, - 250,251,255,248,250,255,247,249,255,247,249,255,250,252,255,244,245, - 255,252,254,255,253,254, 7, 0, 0,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,140,131,128, - 38, 12, 12, 44, 0, 1, 62, 7, 10, 69, 10, 14, 70, 15, 18, 49, 4, - 7, 58, 24, 25, 37, 13, 15, 18, 4, 5, 21, 13, 14,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0, - 255,148,139,136,255,252,251,255,249,251,255,247,251,255,247,249,255, - 237,238,255,245,247,255,249,249,255,250,249,255,253,254, 7, 0, 0, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, - 0,255,255, 0,255,128,119,116,255,247,246, 50, 0, 2, 77, 14, 16, - 68, 5, 7, 76, 18, 19, 61, 14, 16,255,248,248,255,253,252,255,255, - 252, 9, 5, 4,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, - 255, 0,255,255, 0,255,255, 0,255,132,123,120,255,252,251,255,249, - 249,255,235,237,255,244,246,255,249,248,255,242,240,255,252,251,255, - 254,252,255,253,249, 0, 1, 0,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,131,122,119,255, - 249,248, 62, 10, 10, 72, 9, 11, 71, 11, 11, 63, 12, 10,255,251,249, - 255,254,249,254,245,242,253,255,252, 0, 5, 2,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, - 141,134,131,255,252,251,255,245,245,255,245,247,255,246,245,255,246, - 244,255,252,249,255,254,249,255,255,252,250,255,252, 0, 2, 0,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0, - 255,255, 0,255,129,124,121,255,245,243, 58, 16, 17, 60, 10, 10, 55, - 11, 10, 49, 16, 13, 34, 12, 7,255,254,250,249,255,250,244,255,252, - 0, 3, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, - 0,255,255, 0,255,255, 0,255,138,134,133,255,254,252,255,252,252, - 255,247,247,255,253,252,255,253,249,255,254,249,250,255,252,238,255, - 249,236,255,251, 0, 8, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 0, 0, 0,255, 0,255,255, 0,255,132,130,130,137,127,127,139,123, - 124,145,123,125,161,134,137,140,114,114,162,141,140,139,127,125,132, - 129,125,133,140,135,114,124,118,122,132,126, 0, 2, 0, 13, 9, 8, - 9, 0, 0, 13, 0, 0, 14, 0, 0, 11, 0, 0,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,138,124,126,255, - 252,254, 35, 2, 6, 59, 19, 24, 48, 0, 4, 76, 14, 20, 59, 0, 3, - 255,243,247,255,250,252,255,250,250,255,251,250,255,253,252,255,253, - 252,255,242,245,255,251,254,255,246,249,255,251,254,255,252,254,150, - 132,133,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 158,135,139,255,250,254, 55, 14, 19,255,247,254,255,245,253,255,241, - 249, 80, 7, 15,255,246,252, 55, 4, 8, 46, 7, 9, 45, 13, 14,255, - 239,239,255,250,250, 46, 17, 20, 37, 6, 9, 42, 13, 16,255,247,250, - 255,252,254,133,121,121, 5, 0, 0,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,146,119,123,255,250,254, 50, 4, 10, 54, 0, 7, 67, - 8, 16, 67, 7, 13, 66, 8, 13,255,245,248,255,250,252,255,252,252, - 255,253,252,255,253,254,255,254,254,255,249,249,255,248,248,255,254, - 254,255,255,254,248,248,248,250,255,255,107,120,118,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,150,127,131,157,126,129,154,114,119, - 180,134,140,171,123,129,154,111,114,161,124,126,161,133,133,137,117, - 116,143,131,129,123,118,115,135,131,130,120,118,117,135,133,132,136, - 134,133,128,129,127,122,125,123,115,123,122,125,139,137,114,133,130, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - -Const - stdimg_vfd_listview : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, - 0, 0, 0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0, - 255,128,128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,192,192,192,255,255,255,255, 0,255, 0, - 0, 0,255, 0,255,128,128,128, 0, 0, 0,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,192,192,192,255,255,255, - 255, 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255,255, - 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,192,192, - 192,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, - 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0,255, - 128,128,128, 0, 0, 0,255,255,255,255,255,255, 0,255,255, 0,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,192,192,192,255,255,255,255, 0,255, 0, 0, - 0,255, 0,255,128,128,128, 0, 0, 0,255,255,255,255,255,255,128, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,192,192,192,255,255,255,255, - 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,192,192,192, - 255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, - 0,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, - 255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, - 255,192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128, - 128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,192,192,192,255,255,255,255, 0,255, 0, 0, 0, - 255, 0,255,128,128,128, 0, 0, 0,255,255,255,255,255,255, 0,255, - 255, 0, 0,255,255,255,255,255,255,255,255,255,255,128,128,128, 0, - 255,255,255,255,255,255,255,255,255,255,255, 0,255,255,128, 0, 0, - 255,255,255,255,255,255,255,255,255,192,192,192,255,255,255,255, 0, - 255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255,255,255,255, - 255,255, 0, 0,255,128, 0, 0,255,255,255,255,255,255,255,255,255, - 0,255,255, 0, 0,255,255,255,255,255,255,255,255,255,255, 0, 0, - 255, 0,255,255,255,255,255,255,255,255,255,255,255,192,192,192,255, - 255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128, - 128, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, - 255,255,255,255,192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, - 0,255,128,128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,192,192,192,255,255,255,255, 0,255, - 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255,255,255,255,255, - 255, 0,255,255, 0,255,255,255,255,255,255,255,255,255,255,255, 0, - 0,255, 0,255,255,255,255,255,255,255,255,255,255,255, 0,255,255, - 0, 0,255,255,255,255,255,255,255,255,255,255,192,192,192,255,255, - 255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255, - 255,255,255,255,255,128, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,255,255, 0,255,255,128, 0, 0,255,255,255,255,255,255,255,255, - 255, 0,255,255,128,128,128,255,255,255,255,255,255,255,255,255,192, - 192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0, - 255,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255, 0, - 0, 0,255, 0,255,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - -Const - stdimg_vfd_stringgrid : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 128, 0, 0,128, 0, 0,128, 0, 0,255, 0,255,128, 0, 0,128, 0, - 0,128, 0, 0,255, 0,255,255, 0,255,255, 0,255,128, 0, 0,128, - 0, 0,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,128, 0, 0,255, 0,255,255, 0,255,128, 0, 0,255, 0,255,128, - 0, 0,255, 0,255,255, 0,255,128, 0, 0,255, 0,255,128, 0, 0, - 255, 0,255,255, 0,255,128, 0, 0,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,128, 0, 0,255, 0,255,255, 0,255,128, 0, 0, - 255, 0,255,128, 0, 0,255, 0,255,255, 0,255,128, 0, 0,255, 0, - 255,128, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,128, 0, 0,128, 0, - 0,128, 0, 0,255, 0,255,128, 0, 0,255, 0,255,255, 0,255,128, - 0, 0,255, 0,255,128, 0, 0,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,128, 0, 0,255, 0,255,128, 0, 0,255, 0,255, - 255, 0,255,128, 0, 0,255, 0,255,128, 0, 0,255, 0,255,255, 0, - 255,128, 0, 0,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,128, 0, 0,128, 0, 0,255, 0,255,255, 0,255,128, 0, - 0,128, 0, 0,128, 0, 0,255, 0,255,255, 0,255,255, 0,255,128, - 0, 0,128, 0, 0,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,128, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, - 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,128, 0, 0,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 0, 0, 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, 0, 0, 0,192,192, - 192, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,192,192,192,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, 0, - 0, 0,255,255,255, 0, 0, 0,255,255,255,128, 0, 0,128, 0, 0, - 128, 0, 0,255,255,255,192,192,192,255,255,255,128, 0, 0,128, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,255,255,255,255,255,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, - 255, 0,255, 0, 0, 0,192,192,192, 0, 0, 0,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,192,192,192,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255, 0, 0, 0,255, 0,255, 0, 0, 0,255,255,255, 0, 0, 0,255, - 255,255,128, 0, 0,128, 0, 0,128, 0, 0,255,255,255,192,192,192, - 255,255,255,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, - 0,128, 0, 0,255,255,255, 0, 0, 0,255, 0,255,255, 0,255,255, - 0,255,255, 0,255, 0, 0, 0,255, 0,255, 0, 0, 0,192,192,192, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,192,192,192,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, 0, 0, - 0,255,255,255, 0, 0, 0,255,255,255,128, 0, 0,128, 0, 0,128, - 0, 0,255,255,255,192,192,192,255,255,255,128, 0, 0,128, 0, 0, - 128, 0, 0,128, 0, 0,128, 0, 0,255,255,255,255,255,255, 0, 0, - 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, - 0,255, 0, 0, 0,192,192,192, 0, 0, 0,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,192,192,192,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 0, 0, 0,255, 0,255, 0, 0, 0,255,255,255, 0, 0, 0,255,255, - 255,128, 0, 0,128, 0, 0,128, 0, 0,255,255,255,192,192,192,255, - 255,255,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0,128, 0, 0, - 128, 0, 0,255,255,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255, 0, 0, 0,192,192,192, 0, - 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 192,192,192,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255, 0, 0, 0,192,192,192, 0, 0, 0,255,255,255,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,255,255,255,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - -Const - stdimg_vfd_radiobutton : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255,255,255,255,255,255,206,214,214,206,214,214,206,214,214,206, - 214,214,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, - 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,132,132,132,206,214,214,206,214,214,255,255,255,255,255,255, - 255,255,255,255,255,255,206,214,214,206,214,214,255,255,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,132,132,132, 66, 66, 66,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,206,214,214,255, - 255,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,132,132,132, 66, 66, 66,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, - 255,255,255,206,214,214,255,255,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,132,132,132, 66, 66, 66, - 255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,255,255,255,255,255,255,206,214,214,255,255,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,132,132, - 132, 66, 66, 66,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,255,255,255,255,255,255,206,214,214,255,255,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,132,132,132, 66, 66, 66,255,255,255,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,206,214, - 214,255,255,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,132,132,132, 66, 66, 66,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,206, - 214,214,255,255,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,132,132,132, 66, - 66, 66, 66, 66, 66,255,255,255,255,255,255,255,255,255,255,255,255, - 66, 66, 66, 66, 66, 66,255,255,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,132,132,132,132,132,132, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66,132,132,132,132,132,132,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,132,132,132,132, - 132,132,132,132,132,132,132,132,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - -Const - stdimg_vfd_pagecontrol : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255,255,255,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128, 0, 0, 0,255, 0,255,255,255,255,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,128,128,128, 0, 0, 0,255, 0,255,255,255,255,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,128,128,128, 0, 0, 0,255, 0,255, - 255,255,255,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,128,128,128, 0, 0, - 0,255, 0,255,255,255,255,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,128, - 128,128, 0, 0, 0,255, 0,255,255,255,255,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,128,128,128, 0, 0, 0,255, 0,255,255,255,255,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,128,128,128, 0, 0, 0,255, 0,255,255, - 255,255,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,128,128,128, 0, 0, 0, - 255, 0,255,255,255,255,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,128,128, - 128, 0, 0, 0,255, 0,255,255,255,255,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,128,128,128, 0, 0, 0,255, 0,255,255,255,255,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,128,128,128,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,128,128,128, 0, 0, 0,255, 0,255,255,255, - 255,192,192,192, 0, 0, 0,192,192,192, 0, 0, 0, 0, 0, 0,192, - 192,192, 0, 0, 0,192,192,192,128,128,128,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,128,128,128,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,128,128,128, 0, 0, 0,255, - 0,255,255,255,255,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,128,128,128,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,128,128,128,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,128,128,128, - 0, 0, 0,255, 0,255,255,255,255,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,128, - 128,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - -Const - stdimg_vfd_treeview : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, - 0, 0, 0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0, - 255,128,128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,192,192,192,255,255,255,255, 0,255, 0, - 0, 0,255, 0,255,128,128,128, 0, 0, 0,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,192,192,192,255,255,255, - 255, 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 10,145,175, 29,213,249, 10,145,175,255,255,255,255,255,255, - 142,142,142, 89, 89, 89,142,142,142,255,255,255,255,255,255,192,192, - 192,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, - 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 142,142,142,142,142,142, 10,145,175, 10,145,175, 10,145,175,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0,255, - 128,128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,142,142,142,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,192,192,192,255,255,255,255, 0,255, 0, 0, - 0,255, 0,255,128,128,128, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255, 10,145,175, 29,213,249, 10,145,175,255,255,255, - 255,255,255,142,142,142, 89, 89, 89, 89, 89, 89, 89, 89, 89,255,255, - 255,255,255,255,255,255,255,255,255,255,192,192,192,255,255,255,255, - 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255,255,255, - 255,255,255,255,255,255,255,255,255, 29,213,249, 10,145,175, 10,145, - 175,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,192,192,192, - 255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, - 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,142, - 142,142,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128, - 128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,142,142,142,255,255,255, 10,145,175, 29,213,249, 10,145, - 175,255,255,255,255,255,255,142,142,142, 89, 89, 89, 89, 89, 89,255, - 255,255,255,255,255,192,192,192,255,255,255,255, 0,255, 0, 0, 0, - 255, 0,255,128,128,128, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,142,142,142,142,142,142, 29,213,249, 10, - 145,175, 10,145,175,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,192,192,192,255,255,255,255, 0, - 255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,142,142,142,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,192,192,192,255, - 255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0, - 255,255,255,255,255,255,255,255,255,255,255,255, 10,145,175, 29,213, - 249, 10,145,175,255,255,255,255,255,255, 89, 89, 89, 89, 89, 89,142, - 142,142,142,142,142,255,255,255,255,255,255,255,255,255,255,255,255, - 192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128, - 128, 0, 0, 0,255,255,255,255,255,255,142,142,142,142,142,142, 29, - 213,249, 10,145,175, 10,145,175,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, - 0,255,128,128,128, 0, 0, 0,255,255,255,255,255,255,142,142,142, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,192,192,192,255,255,255,255, 0,255, - 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255,255,255, 10,145, - 175, 29,213,249, 10,145,175,255,255,255,255,255,255,255,255,255,142, - 142,142, 89, 89, 89, 89, 89, 89,142,142,142, 89, 89, 89,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,192,192,192,255,255, - 255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255, - 255,255, 29,213,249, 10,145,175, 10,145,175,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,192, - 192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0, - 255,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255, 0, - 0, 0,255, 0,255,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - - - -Const - stdimg_vfd_newform : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,198, 75,140, - 195,142,104,192,139,102,190,136,100,187,133, 97,185,131, 95,180,126, - 92,178,124, 90,177,123, 88,174,121, 87,173,118, 86,171,117, 84,169, - 115, 83,169,113, 81,198, 75,140,255, 0,255,200,146,108,230,229,229, - 229,229,229,229,229,230,229,229,229,229,229,229,230,229,229,229,229, - 229,230,229,229,229,230,229,230,230,230,230,229,229,229,230,230,230, - 229,230,169,114, 81,255, 0,255,202,148,110,231,231,231,232,231,231, - 231,231,231,231,231,231,231,231,231,195,195,195,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,231,231,231,170, - 115, 83,255, 0,255,204,151,111,233,233,233,210,131, 88,210,131, 88, - 210,131, 88,233,233,233,195,195,195,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,233,234,234,172,117, 84,255, - 0,255,209,156,115,236,236,236,236,236,235,236,236,235,236,236,236, - 236,235,236,195,195,195,195,195,195,195,195,195,195,195,195,195,195, - 195,195,195,195,195,195,195,236,236,235,176,122, 88,255, 0,255,212, - 158,117,239,238,238,239,239,239,239,238,238,239,238,238,238,239,238, - 238,238,238,238,239,239,238,238,238,238,238,238,238,238,238,239,238, - 238,238,238,238,238,238,239,178,124, 90,255, 0,255,213,160,118,241, - 241,240,241,240,241,240,241,241,241,240,241,241,241,241,195,195,195, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,241,241,241,181,126, 92,255, 0,255,216,162,121,242,242,242,210, - 131, 88,210,131, 88,210,131, 88,242,242,243,195,195,195,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,243,243, - 243,183,129, 94,255, 0,255,217,163,121,245,245,245,245,245,244,244, - 245,244,244,244,244,245,245,244,195,195,195,195,195,195,195,195,195, - 195,195,195,195,195,195,195,195,195,195,195,195,244,244,245,186,133, - 96,255, 0,255,219,164,122,246,246,246,246,246,246,246,246,246,246, - 246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246, - 246,246,246,246,246,246,246,246,246,246,246,246,189,135, 99,255, 0, - 255,220,167,123,220,167,123,220,167,123,220,167,123,220,167,123,220, - 167,123,220,167,123,220,167,123,220,167,123,220,167,123,220,167,123, - 220,167,123,220,167,123,220,167,123,192,139,102,255, 0,255,221,171, - 134,232,185,146,232,185,146,232,185,146,232,185,146,232,185,146,232, - 185,146,232,185,146,232,185,146,232,185,146,232,185,146,232,185,146, - 232,185,146,232,185,146,193,143,112,255, 0,255,219, 47,182,222,169, - 146,220,167,123,220,166,122,218,164,122,216,162,121,213,160,118,212, - 158,117,210,157,115,207,154,114,206,153,112,203,150,111,201,148,108, - 199,147,128,219, 47,182,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - - - -Const - stdimg_vfd_dateedit : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,128,128,128,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,128,128,128,192,192, - 192,192,192,192, 0, 0, 0,128, 0, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0,128, 0, 0,128, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0,192,192,192, 0, 0, 0, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,128, - 128,128,192,192,192,192,192,192,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,192,192,192, 0, 0, 0, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,128,128,128,192,192,192,192,192,192,255,255,255,255,255, - 255, 0, 0,128, 0, 0,128, 0, 0,128,255,255,255, 0, 0,128, 0, - 0,128, 0, 0,128,192,192,192,255,255,255,255,255,255,192,192,192, - 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,128,128,128,192,192,192,192,192,192,255, - 255,255,255,255,255,255,255,255, 0, 0,128,255,255,255,255,255,255, - 192,192,192,255,255,255,192,192,192, 0, 0,128,255,255,255,255,255, - 255,192,192,192, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,128,128,128,192,192,192, - 192,192,192,255,255,255,255,255,255,255,255,255, 0, 0,128,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0,128,255, - 255,255,255,255,255,192,192,192, 0, 0, 0, 0, 0, 0,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,128,128, - 128,192,192,192,192,192,192,255,255,255,255,255,255,255,255,255, 0, - 0,128,255,255,255,255,255,255, 0, 0,128, 0, 0,128, 0, 0,128, - 192,192,192,255,255,255,255,255,255,192,192,192, 0, 0, 0, 0, 0, - 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,128,128,128,192,192,192,192,192,192,255,255,255,255,255,255, - 0, 0,128, 0, 0,128,255,255,255,255,255,255, 0, 0,128,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,192,192,192, 0, - 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,128,128,128,192,192,192,192,192,192,255,255, - 255,255,255,255,255,255,255, 0, 0,128,255,255,255,255,255,255, 0, - 0,128, 0, 0,128, 0, 0,128, 0, 0,128,255,255,255,255,255,255, - 192,192,192, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,128,128,128,192,192,192,192, - 192,192,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,192,192,192, 0, 0, 0, 0, 0, 0,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,128,128,128, - 192,192,192,192,192,192,255,255,255,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,255,255,255,192,192,192, 0, 0, 0, 0, 0, 0, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,128,128,128,192,192,192,192,192,192, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,192,192, 0, 0, - 0, 0, 0, 0,255, 0,255,128,128,128,255,255,255,255,255,255,255, - 255,255,255,255,255,128,128,128,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192, 0, 0, 0, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0, - 192,192,192,192,192,192,192,192,192, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,128,128, - 128, 0, 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, - 255,255, 0, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0, - 255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, 0,255, 0, - 0,255, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0,255, - 0,255,128,128,128, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,192,192,192,255,255,255,192,192,192, - 0, 0, 0, 0, 0, 0,192,192,192,128,128,128,192,192,192,255,255, - 255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, 0, 0, 0,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,192,192,192,255,255, - 255,192,192,192,192,192,192,192,192,192,192,192,192,128,128,128,192, - 192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,192, - 192,192,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,192,192,192,255,255,255,255, 0,255, 0, 0, 0,255, 0, - 255,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255, 0, - 0, 0,255, 0,255,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - - -Const - stdimg_vfd_bevel : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,200,208,212, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,128,128,128,200,208,212,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255,255, - 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255, - 255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,200,208,212,128, - 128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, - 128,128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,128,128,128,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,255,255,255, - 200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, - 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,255,255,255,200,208,212,128,128,128,255,255,255,255, 0,255,255, - 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,255,255,255,200,208,212,128,128,128,255,255,255, - 255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255, - 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,255,255,255,200,208,212,128,128, - 128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128, - 128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0, - 255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0, - 255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255, - 255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, - 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255, - 200,208,212,255,255,255,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,128,128,128,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, - 255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128, - 128,255,255,255,200,208,212,255,255,255,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,128,128,128,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, - 0,255,128,128,128,255,255,255,200,208,212,255,255,255,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, - 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255,255, - 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,128, - 128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200, - 208,212,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,128,128,128,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255, - 255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, - 255,255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,128,128,128,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,200,208,212,255,255,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,200,208,212,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - diff --git a/examples/apps/uidesigner/images/dateedit.bmp b/examples/apps/uidesigner/images/dateedit.bmp Binary files differdeleted file mode 100644 index 7e075c10..00000000 --- a/examples/apps/uidesigner/images/dateedit.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/gauge.bmp b/examples/apps/uidesigner/images/gauge.bmp Binary files differdeleted file mode 100644 index 3de08d15..00000000 --- a/examples/apps/uidesigner/images/gauge.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/listview.bmp b/examples/apps/uidesigner/images/listview.bmp Binary files differdeleted file mode 100644 index 740de6d8..00000000 --- a/examples/apps/uidesigner/images/listview.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/menubar.bmp b/examples/apps/uidesigner/images/menubar.bmp Binary files differdeleted file mode 100644 index 011e7048..00000000 --- a/examples/apps/uidesigner/images/menubar.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/newform_16.bmp b/examples/apps/uidesigner/images/newform_16.bmp Binary files differdeleted file mode 100644 index 674ccabc..00000000 --- a/examples/apps/uidesigner/images/newform_16.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/pagecontrol.bmp b/examples/apps/uidesigner/images/pagecontrol.bmp Binary files differdeleted file mode 100644 index 355ffacf..00000000 --- a/examples/apps/uidesigner/images/pagecontrol.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/progressbar.bmp b/examples/apps/uidesigner/images/progressbar.bmp Binary files differdeleted file mode 100644 index ec860f18..00000000 --- a/examples/apps/uidesigner/images/progressbar.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/radiobutton.bmp b/examples/apps/uidesigner/images/radiobutton.bmp Binary files differdeleted file mode 100644 index 89e8cfe7..00000000 --- a/examples/apps/uidesigner/images/radiobutton.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/shape_align_bottom.bmp b/examples/apps/uidesigner/images/shape_align_bottom.bmp Binary files differdeleted file mode 100644 index d9495933..00000000 --- a/examples/apps/uidesigner/images/shape_align_bottom.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/shape_align_left.bmp b/examples/apps/uidesigner/images/shape_align_left.bmp Binary files differdeleted file mode 100644 index c9c3ab38..00000000 --- a/examples/apps/uidesigner/images/shape_align_left.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/shape_align_right.bmp b/examples/apps/uidesigner/images/shape_align_right.bmp Binary files differdeleted file mode 100644 index d26d4ad2..00000000 --- a/examples/apps/uidesigner/images/shape_align_right.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/shape_align_top.bmp b/examples/apps/uidesigner/images/shape_align_top.bmp Binary files differdeleted file mode 100644 index 9d26f3d8..00000000 --- a/examples/apps/uidesigner/images/shape_align_top.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/stringgrid.bmp b/examples/apps/uidesigner/images/stringgrid.bmp Binary files differdeleted file mode 100644 index 1930f4a5..00000000 --- a/examples/apps/uidesigner/images/stringgrid.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/trackbar.bmp b/examples/apps/uidesigner/images/trackbar.bmp Binary files differdeleted file mode 100644 index 7bca6e56..00000000 --- a/examples/apps/uidesigner/images/trackbar.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/images/treeview.bmp b/examples/apps/uidesigner/images/treeview.bmp Binary files differdeleted file mode 100644 index ff480a8f..00000000 --- a/examples/apps/uidesigner/images/treeview.bmp +++ /dev/null diff --git a/examples/apps/uidesigner/newformdesigner.pas b/examples/apps/uidesigner/newformdesigner.pas deleted file mode 100644 index 0f6af0f8..00000000 --- a/examples/apps/uidesigner/newformdesigner.pas +++ /dev/null @@ -1,922 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - Essential classes used by the fpGUI Designer -} - -unit newformdesigner; - -{$mode objfpc}{$H+} - -interface - -uses - SysUtils, - Classes, - gfxbase, - gfx_widget, - gui_form, - gui_label, - gui_button, - gui_edit, - gui_listbox, - gui_memo, - gui_combobox, - gui_menu, - gui_mru, - gui_hyperlink, - vfdwidgetclass, - vfdwidgets; - -type - - TwgPaletteButton = class(TfpgButton) - public - VFDWidget: TVFDWidgetClass; - end; - - - TwgPalette = class(TfpgWidget) - protected - procedure HandlePaint; override; - end; - - - TfrmMain = class(TfpgForm) - private - FFileOpenRecent: TfpgMenuItem; - procedure miHelpAboutClick(Sender: TObject); - procedure miHelpAboutGUI(Sender: TObject); - procedure miMRUClick(Sender: TObject; const FileName: string); - public - {@VFD_HEAD_BEGIN: frmMain} - MainMenu: TfpgMenuBar; - btnNewForm: TfpgButton; - btnOpen: TfpgButton; - btnSave: TfpgButton; - wgpalette: TwgPalette; - chlPalette: TfpgComboBox; - filemenu: TfpgPopupMenu; - formmenu: TfpgPopupMenu; - setmenu: TfpgPopupMenu; - miOpenRecentMenu: TfpgPopupMenu; - helpmenu: TfpgPopupMenu; - previewmenu: TfpgPopupMenu; - {@VFD_HEAD_END: frmMain} - mru: TfpgMRU; - function GetSelectedWidget: TVFDWidgetClass; - procedure SetSelectedWidget(wgc: TVFDWidgetClass); - procedure AfterCreate; override; - procedure BeforeDestruction; override; - procedure OnPaletteClick(Sender: TObject); - property SelectedWidget: TVFDWidgetClass read GetSelectedWidget write SetSelectedWidget; - end; - - - TPropertyList = class(TObject) - private - FList: TList; - function GetCount: integer; - public - Widget: TfpgWidget; - constructor Create; - destructor Destroy; override; - procedure Clear; - property Count: integer read GetCount; - procedure AddItem(aProp: TVFDWidgetProperty); - function GetItem(index: integer): TVFDWidgetProperty; - end; - - - TwgPropertyList = class(TfpgListBox) - protected - procedure DrawItem(num: integer; rect: TfpgRect; flags: integer); override; - procedure HandleMouseMove(x, y: integer; btnstate: word; shiftstate: TShiftState); override; - procedure HandleLMouseDown(x, y: integer; shiftstate: TShiftState); override; - procedure HandleLMouseUp(x, y: integer; shiftstate: TShiftState); override; - procedure HandleMouseScroll(x, y: integer; shiftstate: TShiftState; delta: smallint); override; - procedure HandleSetFocus; override; - procedure HandleKillFocus; override; - procedure OnRowChange(Sender: TObject); - procedure OnScrolling(Sender: TObject); - procedure OnUpdateProperty(Sender: TObject); - public - Props: TPropertyList; - NameWidth: integer; - editor: TVFDPropertyEditor; - NameDrag: boolean; - NameDragPos: integer; - constructor Create(AOwner: TComponent); override; - procedure ReleaseEditor; - procedure AllocateEditor; - function ItemCount: integer; override; - function RowHeight: integer; override; - procedure RealignEditor; - end; - - - TfrmProperties = class(TfpgForm) - protected - procedure HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); override; - public - l1, l2, l3, l4, l5, l6, l7, l8: TfpgLabel; - lbClass: TfpgLabel; - edName: TfpgEdit; - edOther: TfpgMemo; - btnTop, btnLeft, btnWidth, btnHeight: TfpgButton; - btnAnLeft, btnAnTop, btnAnRight, btnAnBottom: TfpgButton; - lstProps: TwgPropertyList; - procedure AfterCreate; override; - procedure BeforeDestruction; override; - end; - - - TfrmAbout = class(TfpgForm) - public - {@VFD_HEAD_BEGIN: frmAbout} - lblName1: TfpgLabel; - lblVersion: TfpgLabel; - btnName1: TfpgButton; - lblName3: TfpgLabel; - lblName4: TfpgHyperlink; - lblCompiled: TfpgLabel; - {@VFD_HEAD_END: frmAbout} - procedure AfterCreate; override; - class procedure Execute; - end; - -{@VFD_NEWFORM_DECL} - -var - frmProperties: TfrmProperties; - frmMain: TfrmMain; - - PropList: TPropertyList; - -implementation - -uses - fpgfx, - vfdmain, - gui_iniutils, - gui_dialogs; - - -// Anchor images -{$I anchors.inc} - - -{@VFD_NEWFORM_IMPL} - -procedure TfrmAbout.AfterCreate; -begin - {@VFD_BODY_BEGIN: frmAbout} - Name := 'frmAbout'; - SetPosition(378, 267, 276, 180); - WindowTitle := 'Product Information...'; - Sizeable := False; - WindowPosition := wpScreenCenter; - - lblName1 := TfpgLabel.Create(self); - with lblName1 do - begin - Name := 'lblName1'; - SetPosition(12, 16, 255, 31); - Text := 'fpGUI UI Designer'; - FontDesc := 'Arial-20'; - end; - - lblVersion := TfpgLabel.Create(self); - with lblVersion do - begin - Name := 'lblVersion'; - SetPosition(150, 56, 175, 16); - Text := 'Version: %s'; - FontDesc := '#Label2'; - end; - - btnName1 := TfpgButton.Create(self); - with btnName1 do - begin - Name := 'btnName1'; - SetPosition(194, 148, 75, 24); - Anchors := [anRight,anBottom]; - Text := 'Close'; - FontDesc := '#Label1'; - ImageName := 'stdimg.close'; - ModalResult := 1; - end; - - lblName3 := TfpgLabel.Create(self); - with lblName3 do - begin - Name := 'lblName3'; - SetPosition(12, 100, 241, 14); - Text := 'Written by Graeme Geldenhuys'; - FontDesc := 'Arial-9'; - end; - - lblName4 := TfpgHyperlink.Create(self); - with lblName4 do - begin - Name := 'lblName4'; - SetPosition(12, 116, 246, 14); - Text := 'http://opensoft.homeip.net/fpgui/'; - URL := 'http://opensoft.homeip.net/fpgui/'; - FontDesc := 'Arial-9:underline'; - TextColor := clRoyalBlue; - HotTrackColor := clBlue; - HotTrackFont := 'Arial-9:underline'; - end; - - lblCompiled := TfpgLabel.Create(self); - with lblCompiled do - begin - Name := 'lblCompiled'; - SetPosition(12, 132, 191, 13); - Text := 'Compiled on: %s'; - FontDesc := 'Arial-8'; - end; - - {@VFD_BODY_END: frmAbout} -end; - -class procedure TfrmAbout.Execute; -var - frm: TfrmAbout; -begin - frm := TfrmAbout.Create(nil); - try - frm.lblVersion.Text := Format(frm.lblVersion.Text, [program_version]); - frm.lblCompiled.Text := Format(frm.lblCompiled.Text, [ {$I %date%} + ' ' + {$I %time%}]); - frm.ShowModal; - finally - frm.Free; - end; -end; - - -procedure TfrmMain.AfterCreate; -var - n: integer; - x: integer; - wgc: TVFDWidgetClass; - btn: TwgPaletteButton; -begin - {@VFD_BODY_BEGIN: frmMain} - Name := 'frmMain'; - SetPosition(84, 123, 728, 87); - WindowTitle := 'frmMain'; - WindowPosition := wpUser; - gINI.ReadFormState(self); - - MainMenu := TfpgMenuBar.Create(self); - with MainMenu do - begin - Name := 'MainMenu'; - SetPosition(0, 0, 729, 24); - Anchors := [anLeft,anRight,anTop]; - end; - - btnNewForm := TfpgButton.Create(self); - with btnNewForm do - begin - Name := 'btnNewForm'; - SetPosition(4, 28, 25, 24); - Text := ''; - FontDesc := '#Label1'; - ImageMargin := -1; - ImageName := 'vfd.newform'; - Focusable := False; - OnClick := @(maindsgn.OnNewForm); - end; - - btnOpen := TfpgButton.Create(self); - with btnOpen do - begin - Name := 'btnOpen'; - SetPosition(30, 28, 25, 24); - Text := ''; - FontDesc := '#Label1'; - ImageMargin := -1; - ImageName := 'stdimg.open'; - Focusable := False; - OnClick := @(maindsgn.OnLoadFile); - end; - - btnSave := TfpgButton.Create(self); - with btnSave do - begin - Name := 'btnSave'; - SetPosition(56, 28, 25, 24); - Text := ''; - FontDesc := '#Label1'; - ImageMargin := -1; - ImageName := 'stdimg.save'; - Focusable := False; - OnClick := @(maindsgn.OnSaveFile); - end; - - wgpalette := TwgPalette.Create(self); - with wgpalette do - begin - Name := 'wgpalette'; - SetPosition(116, 28, 613, 28); - Anchors := [anLeft,anRight,anTop]; - Focusable := False; - end; - - chlPalette := TfpgComboBox.Create(self); - with chlPalette do - begin - Name := 'chlPalette'; - SetPosition(116, 60, 200, 22); - Items.Add('-'); - FontDesc := '#List'; - FocusItem := 0; - end; - - filemenu := TfpgPopupMenu.Create(self); - with filemenu do - begin - Name := 'filemenu'; - SetPosition(464, 64, 120, 20); - AddMenuItem('New', '', @(maindsgn.OnNewFile)); - AddMenuItem('Open', '', @(maindsgn.OnLoadFile)); - FFileOpenRecent := AddMenuItem('Open Recent...', '', nil); - AddMenuItem('Save As...', '', @(maindsgn.OnSaveFile)); - AddMenuItem('-', '', nil); - AddMenuItem('New Form...', '', @(maindsgn.OnNewForm)); - AddMenuItem('-', '', nil); - AddMenuItem('Exit', '', @(maindsgn.OnExit)); - end; - - formmenu := TfpgPopupMenu.Create(self); - with formmenu do - begin - Name := 'formmenu'; - SetPosition(464, 48, 120, 20); - AddMenuItem('Widget Order...', '', @(maindsgn.OnEditWidgetOrder)); - AddMenuItem('Tab Order...', '', @(maindsgn.OnEditTabOrder)); - AddMenuItem('-', '', nil); - AddMenuItem('Edit special...', '', nil).Enabled := False; // TODO - end; - - setmenu := TfpgPopupMenu.Create(self); - with setmenu do - begin - Name := 'setmenu'; - SetPosition(464, 29, 120, 20); - AddMenuItem('General options ...', '', @(maindsgn.OnOptionsClick)); - end; - - miOpenRecentMenu := TfpgPopupMenu.Create(self); - with miOpenRecentMenu do - begin - Name := 'miOpenRecentMenu'; - SetPosition(336, 68, 128, 20); - end; - - helpmenu := TfpgPopupMenu.Create(self); - with helpmenu do - begin - Name := 'helpmenu'; - SetPosition(328, 52, 120, 20); - AddMenuItem('Product Information', '', @miHelpAboutClick); - AddMenuItem('About fpGUI', '', @miHelpAboutGUI); - end; - - previewmenu := TfpgPopupMenu.Create(self); - with previewmenu do - begin - Name := 'previewmenu'; - SetPosition(324, 36, 120, 20); - AddMenuItem('with Windows 9x', '', nil).Enabled := False; - AddMenuItem('with Windows XP', '', nil).Enabled := False; - AddMenuItem('with OpenSoft', '', nil).Enabled := False; - AddMenuItem('with Motif', '', nil).Enabled := False; - AddMenuItem('with OpenLook', '', nil).Enabled := False; - end; - - {@VFD_BODY_END: frmMain} - - - x := 0; - for n := 0 to VFDWidgetCount-1 do - begin - wgc := VFDWidget(n); - btn := TwgPaletteButton.Create(wgpalette); - btn.VFDWidget := wgc; - btn.SetPosition(x, 0, 30, 28); - btn.ImageName := wgc.WidgetIconName; - btn.ImageMargin := -1; - btn.Text := ''; - btn.Focusable := False; - btn.OnClick := @OnPaletteClick; - btn.AllowDown := True; - btn.AllowAllUp := True; - chlPalette.Items.AddObject(wgc.WidgetClass.ClassName, wgc); - - Inc(x, 32); - end; - chlPalette.Items.Sort; - MainMenu.AddMenuItem('&File', nil).SubMenu := filemenu; - MainMenu.AddMenuItem('&Settings', nil).SubMenu := setmenu; - MainMenu.AddMenuItem('Fo&rm', nil).SubMenu := formmenu; - MainMenu.AddMenuItem('&Preview', nil).SubMenu := previewmenu; - MainMenu.AddMenuItem('&Help', nil).SubMenu := helpmenu; - - FFileOpenRecent.SubMenu := miOpenRecentMenu; - - mru := TfpgMRU.Create(self); - mru.ParentMenuItem := miOpenRecentMenu; - mru.OnClick := @miMRUClick; - mru.MaxItems := gINI.ReadInteger('Options', 'MRUFileCount', 4); - mru.ShowFullPath := gINI.ReadBool('Options', 'ShowFullPath', True); - mru.LoadMRU; -end; - -procedure TfrmMain.BeforeDestruction; -begin - gINI.WriteFormState(self); - inherited BeforeDestruction; -end; - -procedure TfrmMain.OnPaletteClick(Sender: TObject); -var - s: string; - i: integer; -begin - i := -1; - if TwgPaletteButton(Sender).Down then - begin - s := TwgPaletteButton(Sender).VFDWidget.WidgetClass.ClassName; - i := chlPalette.Items.IndexOf(s); - end; - if i = -1 then - i := 0; // select the '-' item - chlPalette.FocusItem := i; -end; - -{ TfrmProperties } - -procedure TfrmProperties.AfterCreate; -var - x, x2, w, y, gap: integer; -begin - inherited; - Name := 'frmProperties'; - WindowPosition := wpUser; - WindowTitle := 'Properties'; - SetPosition(43, 150, 250, 450); - gINI.ReadFormState(self); - - fpgImages.AddMaskedBMP( - 'vfd.anchorleft', @vfd_anchorleft, - sizeof(vfd_anchorleft), 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.anchorright', @vfd_anchorright, - sizeof(vfd_anchorright), 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.anchortop', @vfd_anchortop, - sizeof(vfd_anchortop), 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.anchorbottom', @vfd_anchorbottom, - sizeof(vfd_anchorbottom), 0, 0); - - x := 3; - x2 := x + 50; - gap := 20; - w := Width - x2; - y := 3; - - l1 := CreateLabel(self, 0, y, 'Class:'); - lbClass := CreateLabel(self, x2, y, 'CLASS'); - lbClass.Width := w; - lbClass.FontDesc := '#Label2'; - lbClass.Anchors := [anLeft, anRight, anTop]; - Inc(y, gap); - - l2 := CreateLabel(self, 0, y + 1, 'Name:'); - edName := CreateEdit(self, x2, y, w, 0); - edName.Text := 'NAME'; - edName.Anchors := [anLeft, anRight, anTop]; - edName.OnChange := @(maindsgn.OnPropNameChange); - - Inc(y, gap + 5); - - lstProps := TwgPropertyList.Create(self); - lstProps.SetPosition(0, y, Width, self.Height - y - 220); - lstProps.Anchors := AllAnchors; - lstProps.Props := PropList; - lstProps.Props.Widget := edName; - - y := lstProps.Bottom + 5; - - //inc(y, gap+5); - - l3 := CreateLabel(self, 3, y + 1, 'Left:'); - l3.Anchors := [anLeft, anBottom]; - btnLeft := CreateButton(self, 50, y - 2, 48, '1234', @(maindsgn.OnPropPosEdit)); - with btnLeft do - begin - Height := 22; - Anchors := [anLeft, anBottom]; - Focusable := False; - end; - l4 := CreateLabel(self, 110, y, 'Top:'); - l4.Anchors := [anLeft, anBottom]; - btnTop := CreateButton(self, 160, y - 2, 48, '45', @(maindsgn.OnPropPosEdit)); - with btnTop do - begin - Height := 22; - Anchors := [anLeft, anBottom]; - Focusable := False; - end; - Inc(y, gap + 5); - l5 := CreateLabel(self, 3, y + 1, 'Width:'); - l5.Anchors := [anLeft, anBottom]; - btnWidth := CreateButton(self, 50, y - 2, 48, '1234', @(maindsgn.OnPropPosEdit)); - with btnWidth do - begin - Height := 22; - Anchors := [anLeft, anBottom]; - Focusable := False; - end; - l6 := CreateLabel(self, 110, y, 'Height:'); - l6.Anchors := [anLeft, anBottom]; - btnHeight := CreateButton(self, 160, y - 2, 48, '45', @(maindsgn.OnPropPosEdit)); - with btnHeight do - begin - Height := 22; - Anchors := [anLeft, anBottom]; - Focusable := False; - end; - Inc(y, gap + 5); - - l8 := CreateLabel(self, 3, y + 1, 'Anchors:'); - l8.Anchors := [anLeft, anBottom]; - - x := 64; - - btnAnLeft := CreateButton(self, x, y - 2, 28, '', nil); - with btnAnLeft do - begin - ImageName := 'vfd.anchorleft'; - ShowImage := True; - AllowAllUp := True; - GroupIndex := 1; - Focusable := False; - Anchors := [anLeft, anBottom]; - OnClick := @(maindsgn.OnAnchorChange); - end; - - Inc(x, 30); - btnAnTop := CreateButton(self, x, y - 2, 26, '', nil); - with btnAnTop do - begin - ImageName := 'vfd.anchortop'; - ShowImage := True; - AllowAllUp := True; - GroupIndex := 2; - Focusable := False; - Anchors := [anLeft, anBottom]; - OnClick := @(maindsgn.OnAnchorChange); - end; - - Inc(x, 30); - btnAnBottom := CreateButton(self, x, y - 2, 26, '', nil); - with btnAnBottom do - begin - ImageName := 'vfd.anchorbottom'; - ShowImage := True; - AllowAllUp := True; - GroupIndex := 3; - Focusable := False; - Anchors := [anLeft, anBottom]; - OnClick := @(maindsgn.OnAnchorChange); - end; - - Inc(x, 30); - btnAnRight := CreateButton(self, x, y - 2, 26, '', nil); - with btnAnRight do - begin - ImageName := 'vfd.anchorright'; - ShowImage := True; - AllowAllUp := True; - GroupIndex := 4; - Focusable := False; - Anchors := [anLeft, anBottom]; - OnClick := @(maindsgn.OnAnchorChange); - end; - - y := btnAnRight.Bottom + 5; - - l7 := CreateLabel(self, 0, y, 'Unknown lines:'); - l7.Anchors := [anLeft, anBottom]; - Inc(y, 16); - - edOther := TfpgMemo.Create(self); - edOther.SetPosition(0, y, self.Width, self.Height - y); - edOther.Anchors := [anLeft, anRight, anBottom]; - edOther.FontDesc := '#Edit2'; - edOther.OnChange := @(maindsgn.OnOtherChange); -end; - -procedure TfrmProperties.BeforeDestruction; -begin - gINI.WriteFormState(self); - inherited BeforeDestruction; -end; - -procedure TfrmProperties.HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); -begin - if keycode = keyF11 then - begin - if maindsgn.selectedform <> nil then - begin - maindsgn.selectedform.Form.SetFocus; - maindsgn.selectedform.Form.ActivateWindow; - end; - consumed := True; - end; - inherited; -end; - -{ TPropertyList } - -procedure TPropertyList.AddItem(aProp: TVFDWidgetProperty); -begin - FList.Add(aProp); -end; - -procedure TPropertyList.Clear; -begin - FList.Clear; -end; - -constructor TPropertyList.Create; -begin - FList := TList.Create; - Widget := nil; -end; - -destructor TPropertyList.Destroy; -begin - Clear; - FList.Free; - inherited; -end; - -function TPropertyList.GetCount: integer; -begin - Result := FList.Count; -end; - -function TPropertyList.GetItem(index: integer): TVFDWidgetProperty; -begin - if (index < 0) or (index > Count-1) then - Result := nil - else - Result := TVFDWidgetProperty(FList[index]); -end; - -{ TwgPropertyList } - -constructor TwgPropertyList.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - NameWidth := 80; - editor := nil; - OnChange := @OnRowChange; - OnScroll := @OnScrolling; - BackgroundColor := clWindowBackground; - NameDrag := False; - //FontName := 'arial-10:antialias=false'; -end; - -procedure TwgPropertyList.OnRowChange(Sender: TObject); -begin - AllocateEditor; -end; - -procedure TwgPropertyList.OnScrolling(Sender: TObject); -begin - AllocateEditor; -end; - -procedure TwgPropertyList.DrawItem(num: integer; rect: TfpgRect; flags: integer); -var - x, - y, - fy: integer; - s: string; - prop: TVFDWidgetProperty; - r: TfpgRect; -begin - prop := Props.GetItem(num); - if prop = nil then - Exit; //==> - - x := rect.left; - y := rect.top; - fy := y + rect.Height div 2 - FFont.Height div 2; - - s := prop.Name; - Canvas.DrawString(x + 1, fy, s); - - Inc(x, NameWidth); - Canvas.SetColor(clShadow1); - Canvas.DrawLine(x, rect.top, x, rect.bottom); - Inc(x); - // Drawing the contents - r.SetRect(x, y, rect.right - x, rect.Height); - Canvas.SetColor(BackgroundColor); - Canvas.FillRectangle(r); - Canvas.SetTextColor(clText1); - Inc(r.left, 2); - Dec(r.Width, 2); - prop.DrawValue(props.Widget, Canvas, r, flags); - - Canvas.SetColor(clShadow1); - Canvas.DrawLine(0, rect.bottom, rect.right, rect.bottom); -end; - -function TwgPropertyList.ItemCount: integer; -begin - Result := Props.Count; -end; - -function TwgPropertyList.RowHeight: integer; -begin - Result := 22; -end; - -procedure TwgPropertyList.OnUpdateProperty(Sender: TObject); -begin - editor.StoreValue(props.Widget); -end; - -procedure TwgPropertyList.HandleMouseMove(x, y: integer; btnstate: word; shiftstate: TShiftState); -begin - if not NameDrag then - begin - if (x >= FMargin + NameWidth - 2) and (x <= FMargin + NameWidth + 2) then - MouseCursor := mcSizeEW - else - MouseCursor := mcDefault; - end - else - begin - NameWidth := x - FMargin; - ReAlignEditor; - RePaint; - end; - inherited; -end; - -procedure TwgPropertyList.HandleLMouseDown(x, y: integer; shiftstate: TShiftState); -begin - if MouseCursor = mcSizeEW then - NameDrag := True - //NameDragPos := x; - else - inherited; -end; - -procedure TwgPropertyList.HandleLMouseUp(x, y: integer; shiftstate: TShiftState); -begin - if NameDrag then - NameDrag := False - else - inherited; -end; - -procedure TwgPropertyList.HandleMouseScroll(x, y: integer; - shiftstate: TShiftState; delta: smallint); -begin - inherited HandleMouseScroll(x, y, shiftstate, delta); - AllocateEditor; -end; - -procedure TwgPropertyList.HandleSetFocus; -begin - inherited HandleSetFocus; - if Editor <> nil then - Editor.Visible := True - else - AllocateEditor; -end; - -procedure TwgPropertyList.HandleKillFocus; -begin - inherited HandleKillFocus; - if Editor <> nil then - Editor.Visible := True; -end; - -procedure TwgPropertyList.RealignEditor; -var - x: integer; -begin - if editor = nil then - Exit; - x := 3 + NameWidth; - editor.SetPosition(x, editor.Top, Width - ScrollBarWidth - x, editor.Height); -end; - -procedure TfrmMain.miHelpAboutClick(Sender: TObject); -begin - TfrmAbout.Execute; -end; - -procedure TfrmMain.miHelpAboutGUI(Sender: TObject); -begin - ShowMessage('This product was created using ' + fpGUIName + ' v' + - fpGUIVersion, 'About fpGUI'); -end; - -procedure TfrmMain.miMRUClick(Sender: TObject; const FileName: string); -begin - maindsgn.EditedFileName := FileName; - maindsgn.OnLoadFile(maindsgn); -end; - -function TfrmMain.GetSelectedWidget: TVFDWidgetClass; -begin - if chlPalette.FocusItem > 0 then - Result := TVFDWidgetClass(chlPalette.Items.Objects[chlPalette.FocusItem]) - else - Result := nil; -end; - -procedure TfrmMain.SetSelectedWidget(wgc: TVFDWidgetClass); -var - n: integer; -begin - if wgc = nil then - begin - chlPalette.FocusItem := 0; - for n := 0 to wgpalette.ComponentCount - 1 do - if wgpalette.Components[n] is TwgPaletteButton then - TwgPaletteButton(wgpalette.Components[n]).Down := False; - end; -end; - -procedure TwgPropertyList.ReleaseEditor; -begin - self.ActiveWidget := nil; - if editor <> nil then - editor.Free; - editor := nil; -end; - -procedure TwgPropertyList.AllocateEditor; -var - x, y: integer; - prop: TVFDWidgetProperty; -begin - prop := Props.GetItem(FFocusItem); - if prop = nil then - Exit; - - self.ActiveWidget := nil; - if editor <> nil then - editor.Free; - - editor := prop.CreateEditor(Self); - x := 3 + NameWidth; - y := FMargin + (FFocusItem - FFirstItem) * RowHeight; - editor.SetPosition(x, y - 1, Width - ScrollBarWidth - x, RowHeight); - editor.CreateLayout; - editor.OnUpdate := @OnUpdateProperty; - editor.LoadValue(Props.Widget); - editor.Visible := True; - - self.ActiveWidget := editor; -end; - -{ TwgPalette } - -procedure TwgPalette.HandlePaint; -begin - Canvas.Clear(clWindowBackground); -end; - - -end. - diff --git a/examples/apps/uidesigner/readme.txt b/examples/apps/uidesigner/readme.txt deleted file mode 100644 index b0ffd0eb..00000000 --- a/examples/apps/uidesigner/readme.txt +++ /dev/null @@ -1,50 +0,0 @@ - - fpGUI's Visual User Interface Designer - ====================================== - - -Introduction -============ - -fpGUI Designer is a port of a product called VFD written by Nagy Viktor in 2003. -I ported VFD to fpGUI because I thought it would add a lot to the framework as -a whole. I could see it has lots of potential and could easily be extended to -become a great tool. What I immediately liked about VFD is that it used the -same source unit and writes actual code describing the UI like I would have -done manually. This departs from the GUI designers used in Lazarus or Delphi -where they save the UI code to external files (*.lfm or *.dfm respectively). - - -Features -======== - -* It uses the same source unit where your normal code lives. No external GUI - files. - -* It can handle "unknown" or "custom" components and properties. Whenever the - designer finds a component it doesn't natively know it paints a green - rectangle in it's place. Whenever it finds properties it doesn't know it - adds them "as is" to the Unknown section memo in the Properties window. Any - code in the Unknown memo will be written back to the source unit "as is". - -* The designer can handle more that one form in a unit. - -* When creating a new form, that form can be merged into an existing unit or - the designer will create a new unit for it. - -* The designer uses comment markers in the code to define what parts it will - maintain. Existing code (Forms) can be easily amended (manually by the - programmer) so that the designer can start managing it. No need to redesign - Forms from scratch. - - - -Graeme Geldenhuys - September 2007 - - ============================================ - - - - - - diff --git a/examples/apps/uidesigner/tests/frm_menutest.pas b/examples/apps/uidesigner/tests/frm_menutest.pas deleted file mode 100644 index 4f707e11..00000000 --- a/examples/apps/uidesigner/tests/frm_menutest.pas +++ /dev/null @@ -1,86 +0,0 @@ -unit frm_menutest; - -{$mode objfpc}{$H+} - -interface - -uses - SysUtils, Classes, gfxbase, fpgfx, gui_edit, - gfx_widget, gui_form, gui_label, gui_button, - gui_listbox, gui_memo, gui_combobox, gui_grid, - gui_dialogs, gui_checkbox, gui_tree, gui_trackbar, - gui_progressbar, gui_radiobutton, gui_tab, gui_menu; - -type - - TfrmMain = class(TfpgForm) - private - procedure miExitClicked(Sender: TObject); - public - {@VFD_HEAD_BEGIN: frmMain} - MainMenu: TfpgMenuBar; - miFile: TfpgPopupMenu; - btnName1: TfpgButton; - {@VFD_HEAD_END: frmMain} - - procedure AfterCreate; override; - end; - -{@VFD_NEWFORM_DECL} - -implementation - -{@VFD_NEWFORM_IMPL} - -procedure TfrmMain.miExitClicked(Sender: TObject); -begin - Close; -end; - -procedure TfrmMain.AfterCreate; -begin - {@VFD_BODY_BEGIN: frmMain} - Name := 'frmMain'; - SetPosition(278, 186, 399, 142); - WindowTitle := 'frmMain'; - WindowPosition := wpScreenCenter; - - MainMenu := TfpgMenuBar.Create(self); - with MainMenu do - begin - Name := 'MainMenu'; - SetPosition(0, 0, 400, 23); - Anchors := [anLeft,anRight,anTop]; - end; - - miFile := TfpgPopupMenu.Create(self); - with miFile do - begin - Name := 'miFile'; - SetPosition(200, 48, 152, 24); - AddMenuItem('&New...', 'Ctrl-N', nil); - AddMenuItem('&Open...', 'Ctrl-O', nil); - AddMenuItem('-', '', nil); - AddMenuItem('E&xit', 'Alt+F4', @miExitClicked); - end; - - btnName1 := TfpgButton.Create(self); - with btnName1 do - begin - Name := 'btnName1'; - SetPosition(8, 112, 75, 24); - Text := 'Button'; - FontDesc := '#Label1'; - ImageName := 'stdimg.quit'; - ModalResult := 0; - ShowImage := True; - OnClick := @miExitClicked; - end; - - {@VFD_BODY_END: frmMain} - - MainMenu.AddMenuItem('&File', nil).SubMenu := miFile; -end; - - -end. diff --git a/examples/apps/uidesigner/tests/menutest.lpi b/examples/apps/uidesigner/tests/menutest.lpi deleted file mode 100644 index 3f9b35ec..00000000 --- a/examples/apps/uidesigner/tests/menutest.lpi +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0"?> -<CONFIG> - <ProjectOptions> - <PathDelim Value="/"/> - <Version Value="6"/> - <General> - <Flags> - <SaveOnlyProjectUnits Value="True"/> - </Flags> - <SessionStorage Value="InProjectDir"/> - <MainUnit Value="0"/> - <IconPath Value="./"/> - <TargetFileExt Value=""/> - <Title Value="menutest"/> - </General> - <VersionInfo> - <ProjectVersion Value=""/> - </VersionInfo> - <PublishOptions> - <Version Value="2"/> - <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> - <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/> - </PublishOptions> - <RunParams> - <local> - <FormatVersion Value="1"/> - <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> - </local> - </RunParams> - <RequiredPackages Count="1"> - <Item1> - <PackageName Value="fpgui_toolkit"/> - </Item1> - </RequiredPackages> - <Units Count="2"> - <Unit0> - <Filename Value="menutest.lpr"/> - <IsPartOfProject Value="True"/> - <UnitName Value="menutest"/> - </Unit0> - <Unit1> - <Filename Value="frm_menutest.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="frm_menutest"/> - </Unit1> - </Units> - </ProjectOptions> - <CompilerOptions> - <Version Value="5"/> - <CodeGeneration> - <Generate Value="Faster"/> - </CodeGeneration> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> - </CompilerOptions> -</CONFIG> diff --git a/examples/apps/uidesigner/tests/menutest.lpr b/examples/apps/uidesigner/tests/menutest.lpr deleted file mode 100644 index 80b985be..00000000 --- a/examples/apps/uidesigner/tests/menutest.lpr +++ /dev/null @@ -1,27 +0,0 @@ -program menutest; - -{$mode objfpc}{$H+} - -uses - {$IFDEF UNIX}{$IFDEF UseCThreads} - cthreads, - {$ENDIF}{$ENDIF} - Classes, frm_menutest, fpgfx; - - - -procedure MainProc; -var - frm: TfrmMain; -begin - fpgApplication.Initialize; - frm := TfrmMain.Create(nil); - frm.Show; - fpgApplication.Run; -end; - -begin - MainProc; -end. - - diff --git a/examples/apps/uidesigner/tests/tabsheet_design.lpi b/examples/apps/uidesigner/tests/tabsheet_design.lpi deleted file mode 100644 index 2124c06d..00000000 --- a/examples/apps/uidesigner/tests/tabsheet_design.lpi +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0"?> -<CONFIG> - <ProjectOptions> - <PathDelim Value="/"/> - <Version Value="6"/> - <General> - <Flags> - <SaveOnlyProjectUnits Value="True"/> - </Flags> - <SessionStorage Value="InProjectDir"/> - <MainUnit Value="0"/> - <IconPath Value="./"/> - <TargetFileExt Value=""/> - <Title Value="project1"/> - </General> - <VersionInfo> - <ProjectVersion Value=""/> - </VersionInfo> - <PublishOptions> - <Version Value="2"/> - <IgnoreBinaries Value="False"/> - <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> - <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/> - </PublishOptions> - <RunParams> - <local> - <FormatVersion Value="1"/> - <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> - </local> - </RunParams> - <RequiredPackages Count="1"> - <Item1> - <PackageName Value="fpgui_toolkit"/> - </Item1> - </RequiredPackages> - <Units Count="2"> - <Unit0> - <Filename Value="tabsheet_design.lpr"/> - <IsPartOfProject Value="True"/> - <UnitName Value="tabsheet_design"/> - </Unit0> - <Unit1> - <Filename Value="tabtest.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="tabtest"/> - </Unit1> - </Units> - </ProjectOptions> - <CompilerOptions> - <Version Value="5"/> - <CodeGeneration> - <Generate Value="Faster"/> - </CodeGeneration> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> - </CompilerOptions> -</CONFIG> diff --git a/examples/apps/uidesigner/tests/tabsheet_design.lpr b/examples/apps/uidesigner/tests/tabsheet_design.lpr deleted file mode 100644 index 7acb50aa..00000000 --- a/examples/apps/uidesigner/tests/tabsheet_design.lpr +++ /dev/null @@ -1,30 +0,0 @@ -program tabsheet_design; - -{$mode objfpc}{$H+} - -uses - {$IFDEF UNIX}{$IFDEF UseCThreads} - cthreads, - {$ENDIF}{$ENDIF} - Classes, fpgfx, tabtest; - - -procedure MainProc; -var - frm: TfrmTabTest; -begin - fpgApplication.Initialize; - frm := TfrmTabTest.Create(nil); - try - frm.Show; - fpgApplication.Run; - finally - frm.Free; - end; -end; - -begin - MainProc; -end. - - diff --git a/examples/apps/uidesigner/tests/tabtest.pas b/examples/apps/uidesigner/tests/tabtest.pas deleted file mode 100644 index 9355a6d2..00000000 --- a/examples/apps/uidesigner/tests/tabtest.pas +++ /dev/null @@ -1,226 +0,0 @@ -unit tabtest; - -{$mode objfpc}{$H+} - -interface - -uses - SysUtils, Classes, gfxbase, fpgfx, gui_edit, - gfx_widget, gui_form, gui_label, gui_button, - gui_listbox, gui_memo, gui_combobox, gui_grid, - gui_dialogs, gui_checkbox, gui_tree, gui_trackbar, - gui_progressbar, gui_radiobutton, gui_tab, gui_menu, - gui_bevel; - -type - - TfraGeneral = class(TfpgForm) - public - {@VFD_HEAD_BEGIN: fraGeneral} - lblName1: TfpgLabel; - edtName1: TfpgEdit; - memName1: TfpgMemo; - btnName1: TfpgButton; - {@VFD_HEAD_END: fraGeneral} - procedure AfterCreate; override; - end; - - - TfraAddress = class(TfpgForm) - public - {@VFD_HEAD_BEGIN: fraAddress} - edtName1: TfpgEdit; - lblName1: TfpgLabel; - lblName2: TfpgLabel; - lblName3: TfpgLabel; - cbName1: TfpgComboBox; - {@VFD_HEAD_END: fraAddress} - procedure AfterCreate; override; - end; - - - TfrmTabTest = class(TfpgForm) - private - procedure btnCloseClicked(Sender: TObject); - public - {@VFD_HEAD_BEGIN: frmTabTest} - pcName1: TfpgPageControl; - btnClose: TfpgButton; - {@VFD_HEAD_END: frmTabTest} - - // these must be added manually for now, until the GUI Designer is improved. - tsGeneral: TfpgTabSheet; - tsAddress: TfpgTabSheet; - tsAccounts: TfpgTabSheet; - fraGeneral: TfraGeneral; - fraAddress: TfraAddress; - procedure AfterCreate; override; - end; - - -{@VFD_NEWFORM_DECL} - -implementation - -{@VFD_NEWFORM_IMPL} - -procedure TfraAddress.AfterCreate; -begin - {@VFD_BODY_BEGIN: fraAddress} - Name := 'fraAddress'; - SetPosition(602, 485, 208, 127); - WindowTitle := 'fraAddress'; - - edtName1 := TfpgEdit.Create(self); - with edtName1 do - begin - Name := 'edtName1'; - SetPosition(64, 32, 120, 22); - Text := ''; - FontDesc := '#Edit1'; - end; - - lblName1 := TfpgLabel.Create(self); - with lblName1 do - begin - Name := 'lblName1'; - SetPosition(4, 4, 156, 16); - Text := 'TabSheet - Address'; - FontDesc := '#Label2'; - end; - - lblName2 := TfpgLabel.Create(self); - with lblName2 do - begin - Name := 'lblName2'; - SetPosition(8, 36, 44, 16); - Text := 'Street'; - FontDesc := '#Label1'; - end; - - lblName3 := TfpgLabel.Create(self); - with lblName3 do - begin - Name := 'lblName3'; - SetPosition(8, 60, 48, 16); - Text := 'City'; - FontDesc := '#Label1'; - end; - - cbName1 := TfpgComboBox.Create(self); - with cbName1 do - begin - Name := 'cbName1'; - SetPosition(64, 56, 120, 23); - Items.Add('Somerset West'); - Items.Add('Cape Town'); - Items.Add('Durban'); - Items.Add('Jo''burg'); - Items.Add('Pretoria'); - FontDesc := '#List'; - FocusItem := 1; - end; - - {@VFD_BODY_END: fraAddress} -end; - - -procedure TfraGeneral.AfterCreate; -begin - {@VFD_BODY_BEGIN: fraGeneral} - Name := 'fraGeneral'; - SetPosition(611, 290, 197, 165); - WindowTitle := 'fraGeneral'; - - lblName1 := TfpgLabel.Create(self); - with lblName1 do - begin - Name := 'lblName1'; - SetPosition(4, 4, 212, 16); - Text := 'TabSheet - General'; - FontDesc := '#Label2'; - end; - - edtName1 := TfpgEdit.Create(self); - with edtName1 do - begin - Name := 'edtName1'; - SetPosition(12, 28, 144, 22); - Anchors := [anLeft,anRight,anTop]; - Text := ''; - FontDesc := '#Edit1'; - end; - - memName1 := TfpgMemo.Create(self); - with memName1 do - begin - Name := 'memName1'; - SetPosition(12, 56, 172, 96); - Anchors := [anLeft,anRight,anTop,anBottom]; - FontDesc := '#Edit1'; - end; - - btnName1 := TfpgButton.Create(self); - with btnName1 do - begin - Name := 'btnName1'; - SetPosition(160, 28, 19, 20); - Anchors := [anRight,anTop]; - Text := '...'; - FontDesc := '#Label1'; - ImageName := ''; - ModalResult := 0; - end; - - {@VFD_BODY_END: fraGeneral} -end; - -procedure TfrmTabTest.btnCloseClicked(Sender: TObject); -begin - Close; -end; - -procedure TfrmTabTest.AfterCreate; -begin - {@VFD_BODY_BEGIN: frmTabTest} - Name := 'frmTabTest'; - SetPosition(293, 290, 275, 198); - WindowTitle := 'Tab Design Test'; - - pcName1 := TfpgPageControl.Create(self); - with pcName1 do - begin - Name := 'pcName1'; - SetPosition(8, 12, 258, 148); - Anchors := [anLeft,anRight,anTop,anBottom]; - FixedTabWidth := 0; - Style := tsTabs; - TabPosition := tpTop; - tsGeneral := AppendTabSheet('General'); - tsAddress := AppendTabSheet('Address'); - tsAccounts := AppendTabSheet('EAddress'); - ActivePage := tsGeneral; - end; - - btnClose := TfpgButton.Create(self); - with btnClose do - begin - Name := 'btnClose'; - SetPosition(192, 168, 75, 24); - Anchors := [anRight,anBottom]; - Text := 'Close'; - FontDesc := '#Label1'; - ImageName := ''; - ModalResult := 0; - OnClick := @btnCloseClicked; - end; - - {@VFD_BODY_END: frmTabTest} - - fraGeneral := TfraGeneral.Create(tsGeneral); - fraGeneral.Align := alClient; - fraAddress := TfraAddress.Create(tsAddress); - fraAddress.Align := alClient; -end; - -end. diff --git a/examples/apps/uidesigner/uidesigner.lpi b/examples/apps/uidesigner/uidesigner.lpi deleted file mode 100644 index 5090138f..00000000 --- a/examples/apps/uidesigner/uidesigner.lpi +++ /dev/null @@ -1,133 +0,0 @@ -<?xml version="1.0"?> -<CONFIG> - <ProjectOptions> - <PathDelim Value="/"/> - <Version Value="6"/> - <General> - <Flags> - <SaveOnlyProjectUnits Value="True"/> - </Flags> - <SessionStorage Value="InProjectDir"/> - <MainUnit Value="0"/> - <IconPath Value="./"/> - <TargetFileExt Value=""/> - <Title Value="uiDesigner"/> - </General> - <VersionInfo> - <ProjectVersion Value=""/> - </VersionInfo> - <PublishOptions> - <Version Value="2"/> - <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> - <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/> - </PublishOptions> - <RunParams> - <local> - <FormatVersion Value="1"/> - <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> - </local> - </RunParams> - <RequiredPackages Count="1"> - <Item1> - <PackageName Value="fpgui_toolkit"/> - </Item1> - </RequiredPackages> - <Units Count="16"> - <Unit0> - <Filename Value="uidesigner.lpr"/> - <IsPartOfProject Value="True"/> - <UnitName Value="uidesigner"/> - </Unit0> - <Unit1> - <Filename Value="vfdmain.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfdmain"/> - </Unit1> - <Unit2> - <Filename Value="vfdresizer.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfdresizer"/> - </Unit2> - <Unit3> - <Filename Value="vfdforms.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfdforms"/> - </Unit3> - <Unit4> - <Filename Value="vfddesigner.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfddesigner"/> - </Unit4> - <Unit5> - <Filename Value="vfdfile.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfdfile"/> - </Unit5> - <Unit6> - <Filename Value="newformdesigner.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="newformdesigner"/> - </Unit6> - <Unit7> - <Filename Value="vfdwidgets.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfdwidgets"/> - </Unit7> - <Unit8> - <Filename Value="vfdwidgetclass.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfdwidgetclass"/> - </Unit8> - <Unit9> - <Filename Value="vfdeditors.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfdeditors"/> - </Unit9> - <Unit10> - <Filename Value="vfdformparser.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfdformparser"/> - </Unit10> - <Unit11> - <Filename Value="vfdprops.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfdprops"/> - </Unit11> - <Unit12> - <Filename Value="vfdutils.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfdutils"/> - </Unit12> - <Unit13> - <Filename Value="vfdpropeditgrid.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="vfdpropeditgrid"/> - </Unit13> - <Unit14> - <Filename Value="anchors.inc"/> - <IsPartOfProject Value="True"/> - </Unit14> - <Unit15> - <Filename Value="icons.inc"/> - <IsPartOfProject Value="True"/> - </Unit15> - </Units> - </ProjectOptions> - <CompilerOptions> - <Version Value="5"/> - <Parsing> - <SyntaxOptions> - <AllowLabel Value="False"/> - <CPPInline Value="False"/> - </SyntaxOptions> - </Parsing> - <CodeGeneration> - <Generate Value="Faster"/> - </CodeGeneration> - <Other> - <CustomOptions Value="-FUunits -"/> - <CompilerPath Value="$(CompPath)"/> - </Other> - </CompilerOptions> -</CONFIG> diff --git a/examples/apps/uidesigner/uidesigner.lpr b/examples/apps/uidesigner/uidesigner.lpr deleted file mode 100644 index 9b75daaa..00000000 --- a/examples/apps/uidesigner/uidesigner.lpr +++ /dev/null @@ -1,58 +0,0 @@ -{ - fpGUI - Free Pascal GUI Library - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - The starting unit for the UI Designer project. -} - -program uidesigner; - -{$mode objfpc}{$H+} - -uses - {$IFDEF UNIX}{$IFDEF UseCThreads} - cthreads, - {$ENDIF}{$ENDIF} - Classes, SysUtils, fpgfx, vfdmain, vfdresizer, vfdforms, - vfdfile, newformdesigner, vfdwidgets, vfdformparser, vfdeditors, - vfdwidgetclass, vfdutils, vfdprops, vfddesigner, vfdpropeditgrid; - - -procedure MainProc; -begin - fpgApplication.Initialize; - try - RegisterWidgets; - PropList := TPropertyList.Create; - maindsgn := TMainDesigner.Create; - maindsgn.CreateWindows; - maindsgn.EditedFileName := ParamStr(1); - if FileExists(maindsgn.EditedFileName) then - maindsgn.OnLoadFile(maindsgn); - - // Note: This needs improving!! - fpgApplication.MainForm := frmMain; - fpgApplication.Run; - - PropList.Free; - - finally - maindsgn.Free; - end; -end; - -begin - MainProc; -end. - - diff --git a/examples/apps/uidesigner/vfddesigner.pas b/examples/apps/uidesigner/vfddesigner.pas deleted file mode 100644 index f8bb23af..00000000 --- a/examples/apps/uidesigner/vfddesigner.pas +++ /dev/null @@ -1,1576 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - A lot of the main code is here. -} - - -unit vfddesigner; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, - SysUtils, - gfxbase, - fpgfx, - gfx_widget, - gui_form, - gui_dialogs, - gui_label, - gui_edit, - gui_button, - gui_listbox, - gui_memo, - gui_combobox, - gui_checkbox, - vfdresizer, - vfdforms, - vfdeditors, - vfdwidgetclass, - vfdwidgets, - newformdesigner; - -type - - TOtherWidget = class(TfpgWidget) - protected - FFont: TfpgFont; - procedure HandlePaint; override; - public - wgClassName: string; - constructor Create(AOwner: TComponent); override; - end; - - - TFormDesigner = class; // forward declaration - - - TDesignedForm = class(TfpgForm) - public - procedure AfterCreate; override; - end; - - - TWidgetDesigner = class(TObject) - private - procedure SetSelected(const AValue: boolean); - public - FFormDesigner: TFormDesigner; - FWidget: TfpgWidget; - FVFDClass: TVFDWidgetClass; - FSelected: boolean; - resizer: array[1..8] of TwgResizer; - other: TStringList; - constructor Create(AFormDesigner: TFormDesigner; wg: TfpgWidget; wgc: TVFDWidgetClass); - destructor Destroy; override; - property Selected: boolean read FSelected write SetSelected; - property Widget: TfpgWidget read FWidget; - procedure UpdateResizerPositions; - property FormDesigner: TFormDesigner read FFormDesigner; - end; - - - TFormDesigner = class(TObject) - protected - FWidgets: TList; - FForm: TDesignedForm; - FFormOther: string; - FDragging: boolean; - FDragPosX, - FDragPosY: TfpgCoord; - FWasDrag: boolean; - protected - // messages of the designed widgets - procedure MsgMouseDown(var msg: TfpgMessageRec); message FPGM_MOUSEDOWN; - procedure MsgMouseUp(var msg: TfpgMessageRec); message FPGM_MOUSEUP; - procedure MsgMouseMove(var msg: TfpgMessageRec); message FPGM_MOUSEMOVE; - procedure MsgKeyPress(var msg: TfpgMessageRec); message FPGM_KEYPRESS; - procedure MsgMove(var msg: TfpgMessageRec); message FPGM_MOVE; - procedure MsgResize(var msg: TfpgMessageRec); message FPGM_RESIZE; - procedure MsgActivate(var msg: TfpgMessageRec); message FPGM_ACTIVATE; - procedure DesignerKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); - public - OneClickMove: boolean; // the widgets can be selected and dragged within one click - constructor Create; - destructor Destroy; override; - procedure ClearForm; - procedure DefaultHandler(var msg); override; - procedure Show; - function AddWidget(wg: TfpgWidget; wgc: TVFDWidgetClass): TWidgetDesigner; - function WidgetDesigner(wg: TfpgWidget): TWidgetDesigner; - function FindWidgetByName(const wgname: string): TfpgWidget; - procedure DeSelectAll; - procedure SelectAll; - procedure SelectNextWidget(fw: boolean); - procedure MoveResizeWidgets(dx, dy, dw, dh: integer); - procedure DeleteWidgets; - procedure EditWidgetOrder; - procedure EditTabOrder; - procedure InsertWidget(pwg: TfpgWidget; x, y: integer; wgc: TVFDWidgetClass); - procedure UpdatePropWin; - procedure OnPropTextChange(Sender: TObject); - procedure OnPropNameChange(Sender: TObject); - procedure OnPropPosEdit(Sender: TObject); - procedure OnOtherChange(Sender: TObject); - procedure OnAnchorChange(Sender: TObject); - procedure OnEditWidget(Sender: TObject); - function GenerateNewName(namebase: string): string; - procedure RunWidgetEditor(wgd: TWidgetDesigner; wg: TfpgWidget); - function GetFormSourceDecl: string; - function GetFormSourceImpl: string; - function GetWidgetSourceImpl(wd: TWidgetDesigner; ident: string): string; - property Form: TDesignedForm read FForm; - property FormOther: string read FFormOther write FFormOther; - end; - - -implementation - -uses - vfdmain, TypInfo; - - -{ TWidgetDesigner } - -procedure TWidgetDesigner.SetSelected(const AValue: boolean); -var - n: integer; -begin - if FSelected = AValue then - Exit; - FSelected := AValue; - - if FSelected then - Widget.MouseCursor := mcMove - else - Widget.MouseCursor := mcDefault; - - for n := 1 to 8 do - if FSelected then - resizer[n] := TwgResizer.Create(self, n) - else - begin - if resizer[n] <> nil then - resizer[n].Free; - resizer[n] := nil; - end; - - UpdateResizerPositions; - - if FSelected and Widget.Parent.HasHandle then - for n := 1 to 8 do - resizer[n].Show; -end; - -constructor TWidgetDesigner.Create(AFormDesigner: TFormDesigner; wg: TfpgWidget; wgc: TVFDWidgetClass); -var - n: integer; -begin - FFormDesigner := AFormDesigner; - FWidget := wg; - FVFDClass := wgc; - for n := 1 to 8 do - resizer[n] := nil; - FSelected := False; - wg.MouseCursor := mcDefault; - other := TStringList.Create; -end; - -destructor TWidgetDesigner.Destroy; -var - n: integer; -begin - for n := 1 to 8 do - if resizer[n] <> nil then - resizer[n].Free; - other.Free; - inherited Destroy; -end; - -procedure TWidgetDesigner.UpdateResizerPositions; -var - n: integer; - rs: TwgResizer; -begin - if not FSelected then - Exit; - - for n := 1 to 8 do - begin - rs := resizer[n]; - - if rs <> nil then - begin - case n of - 1: - begin - rs.left := Widget.left - 2; - rs.Top := Widget.Top - 2; - end; - 2: - begin - rs.Top := Widget.Top - 2; - rs.left := Widget.left + Widget.Width div 2 - 2; - end; - 3: - begin - rs.Top := Widget.Top - 2; - rs.left := Widget.left + Widget.Width - 1 - 2; - end; - 4: - begin - rs.Top := Widget.Top + Widget.Height div 2 - 2; - rs.left := Widget.left + Widget.Width - 1 - 2; - end; - 5: - begin - rs.Top := Widget.Top + Widget.Height - 1 - 2; - rs.left := Widget.left + Widget.Width - 1 - 2; - end; - 6: - begin - rs.Top := Widget.Top + Widget.Height - 1 - 2; - rs.left := Widget.left + Widget.Width div 2 - 2; - end; - 7: - begin - rs.Top := Widget.Top + Widget.Height - 1 - 2; - rs.left := Widget.left - 2; - end; - 8: - begin - rs.Top := Widget.Top + Widget.Height div 2 - 2; - rs.left := Widget.left - 2; - end; - end; // case - if rs.HasHandle then - rs.UpdateWindowPosition; - end; - end; - -end; - -{ TFormDesigner } - -procedure TFormDesigner.MsgMouseDown(var msg: TfpgMessageRec); -var - wgd: TWidgetDesigner; - shift: boolean; -begin -// writeln('TFormDesigner.MsgMouseDown'); - msg.Stop := True; - FDragging := True; - FWasDrag := False; - FDragPosX := msg.Params.mouse.x; - FDragPosy := msg.Params.mouse.y; - - if msg.dest = FForm then - Exit; - - wgd := WidgetDesigner(TfpgWidget(msg.dest)); - if wgd = nil then - Exit; - - if not OneClickMove then - Exit; // this Exit disables one click move - - shift := (ssShift in msg.Params.mouse.shiftstate); - - if shift then - Exit; - - if not wgd.Selected then - begin - DeSelectAll; - wgd.Selected := True; - UpdatePropWin; - end; -end; - -procedure TFormDesigner.MsgMouseUp(var msg: TfpgMessageRec); -var - wgd: TWidgetDesigner; - wgc: TVFDWidgetClass; - pwg: TfpgWidget; - shift: boolean; - x, y: integer; -begin -// writeln('TFormDesigner.MsgMouseUp'); - msg.Stop := True; - FDragging := False; - - shift := (ssShift in msg.Params.mouse.shiftstate); - - wgc := frmMain.SelectedWidget; - pwg := TfpgWidget(msg.dest); - wgd := WidgetDesigner(TfpgWidget(msg.dest)); - if wgd = nil then - pwg := FForm - else if not wgd.FVFDClass.Container then - wgc := nil; - - if wgc <> nil then - begin - DeSelectAll; - - if wgc <> nil then - begin - x := msg.Params.mouse.x; - y := msg.Params.mouse.y; - - if maindsgn.GridResolution > 1 then - begin - x := x - x mod maindsgn.GridResolution; - y := y - y mod maindsgn.GridResolution; - end; - - InsertWidget(pwg, x, y, wgc); - - if not shift then - begin - FForm.MouseCursor := mcDefault; - frmMain.SelectedWidget := nil; - end; - end; - end - else - begin - wgd := WidgetDesigner(TfpgWidget(msg.dest)); - if wgd = nil then - begin - DeSelectAll; - UpdatePropWin; - Exit; - end; - - if not shift then - begin - if not wgd.Selected then - DeSelectAll; - wgd.Selected := True; - end - else - wgd.Selected := not wgd.Selected; - end; - - UpdatePropWin; -end; - -procedure TFormDesigner.MsgMouseMove(var msg: TfpgMessageRec); -var - dx, dy: integer; - wgd: TWidgetDesigner; -begin - msg.Stop := True; - if not FDragging then - Exit; - - FWasDrag := True; - - dx := msg.Params.mouse.x - FDragPosX; - dy := msg.Params.mouse.y - FDragPosY; - - wgd := WidgetDesigner(TfpgWidget(msg.dest)); - if (wgd = nil) or (not wgd.Selected) then - Exit; - - if maindsgn.GridResolution > 1 then - begin - dx := dx - (dx mod maindsgn.GridResolution); - dy := dy - (dy mod maindsgn.GridResolution); - end; - - MoveResizeWidgets(dx, dy, 0, 0); -end; - -procedure TFormDesigner.MsgKeyPress(var msg: TfpgMessageRec); -var - key: word; - ss: TShiftState; - consumed: boolean; -begin - key := msg.params.keyboard.keycode; - ss := msg.params.keyboard.shiftstate; - - msg.Stop := True; - consumed := False; - - DesignerKeyPress(key, ss, consumed); -end; - -procedure TFormDesigner.MsgMove(var msg: TfpgMessageRec); -begin - if msg.dest = FForm then - UpdatePropWin; - msg.Stop := True; -end; - -procedure TFormDesigner.MsgResize(var msg: TfpgMessageRec); -begin - msg.Stop := True; - if msg.dest = FForm then - begin - DeSelectAll; // because of the anchorings - UpdatePropWin; - end; -end; - -constructor TFormDesigner.Create; -begin - FWidgets := TList.Create; - FWasDrag := False; - - OneClickMove := True; - - FForm := TDesignedForm.Create(nil); - FForm.FormDesigner := self; - FForm.Name := maindsgn.NewFormName; - FForm.WindowTitle := FForm.Name; - FFormOther := ''; -end; - -destructor TFormDesigner.Destroy; -var - n: integer; -begin - for n := 0 to FWidgets.Count - 1 do - TObject(FWidgets.Items[n]).Free; - FWidgets.Free; - - if FForm <> nil then - FForm.Free; - inherited Destroy; -end; - -procedure TFormDesigner.ClearForm; -var - n: integer; -begin - for n := 0 to FWidgets.Count - 1 do - begin - TWidgetDesigner(FWidgets.Items[n]).Widget.Free; - TObject(FWidgets.Items[n]).Free; - end; - FWidgets.Clear; -end; - -procedure TFormDesigner.DefaultHandler(var msg); -begin - //Writeln('Designer message: ',TMessageRec(msg).msgcode,' from ',TMessageRec(msg).dest.ClassName); -end; - -procedure TFormDesigner.Show; -begin - FForm.Show; - UpdatePropWin; -end; - -function TFormDesigner.AddWidget(wg: TfpgWidget; wgc: TVFDWidgetClass): TWidgetDesigner; -var - cd: TWidgetDesigner; -begin -// writeln('TFormDesigner.AddWidget'); - cd := TWidgetDesigner.Create(self, wg, wgc); - FWidgets.Add(cd); - //cd.Selected := true; - if wg is TDesignedForm then - TDesignedForm(wg).FormDesigner := self; - Result := cd; -end; - -function TFormDesigner.WidgetDesigner(wg: TfpgWidget): TWidgetDesigner; -var - n: integer; - cd: TWidgetDesigner; -begin - Result := nil; - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Widget = wg then - begin - Result := cd; - Exit; - end; - end; -end; - -procedure TFormDesigner.DeSelectAll; -var - n: integer; - cd: TWidgetDesigner; -begin - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - cd.Selected := False; - end; -end; - -procedure TFormDesigner.SelectAll; -var - n: integer; - cd: TWidgetDesigner; -begin - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - cd.Selected := True; - end; -end; - -procedure TFormDesigner.SelectNextWidget(fw: boolean); -var - n, dir: integer; - cd, scd: TWidgetDesigner; -begin - if FWidgets.Count = 0 then - Exit; - - if fw then - begin - n := 0; - dir := 1; - end - else - begin - dir := -1; - n := FWidgets.Count - 1; - end; - - scd := TWidgetDesigner(FWidgets.Items[n]); - - while (n >= 0) and (n < FWidgets.Count) do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - begin - if fw then - begin - if n < FWidgets.Count - 1 then - scd := TWidgetDesigner(FWidgets.Items[n + 1]); - end - else if n > 0 then - scd := TWidgetDesigner(FWidgets.Items[n - 1]); - break; - end; - n := n + dir; - end; - DeSelectAll; - scd.Selected := True; - UpdatePropWin; -end; - -procedure TFormDesigner.MoveResizeWidgets(dx, dy, dw, dh: integer); -var - n: integer; - cd: TWidgetDesigner; -begin - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - begin -// if maindsgn.GridResolution > 1 then; - cd.Widget.MoveAndResizeBy(dx, dy, dw, dh); - cd.UpdateResizerPositions; - end; - end; - UpdatePropWin; -end; - -procedure TFormDesigner.DeleteWidgets; -var - n: integer; - cd: TWidgetDesigner; -begin - n := 0; - while n < FWidgets.Count do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - begin - cd.Widget.Free; - cd.Free; - FWidgets.Delete(n); - end - else - Inc(n); - end; - UpdatePropWin; -end; - - -procedure TFormDesigner.EditWidgetOrder; -var - frm: TWidgetOrderForm; - n, fi: integer; - cd: TWidgetDesigner; - identlevel: integer; - - procedure AddChildWidgets(pwg: TfpgWidget; slist: TStrings); - var - f: integer; - fcd: TWidgetDesigner; - begin - for f := 0 to FWidgets.Count - 1 do - begin - fcd := TWidgetDesigner(FWidgets.Items[f]); - - if fcd.Widget.Parent = pwg then - begin - frm.list.Items.AddObject(StringOfChar(' ', identlevel) + fcd.Widget.Name + ' : ' + fcd.Widget.ClassName, fcd); - Inc(identlevel); - AddChildWidgets(fcd.Widget, slist); - Dec(identlevel); - end; - - if fcd.Selected then - fi := f + 1; - end; - end; - -begin - frm := TWidgetOrderForm.Create(nil); - fi := 1; - - identlevel := 0; - - AddChildWidgets(FForm, frm.list.Items); - - if fi <= frm.list.ItemCount then - frm.list.FocusItem := fi; - - if frm.ShowModal = 1 then - begin - for n := 0 to FWidgets.Count - 1 do - TWidgetDesigner(FWidgets.Items[n]).Widget.Visible := False; - - for n := 0 to FWidgets.Count - 1 do - FWidgets.Items[n] := frm.List.Items.Objects[n]; - - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - cd.Widget.Visible := True; - end; - - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - begin - // re-creating the resizers - cd.Selected := False; - cd.Selected := True; - end; - end; - - end; - frm.Free; -end; - -procedure TFormDesigner.EditTabOrder; -const - cDivider = ' : '; -var - frm: TWidgetOrderForm; - n, fi, i: integer; - cd: TWidgetDesigner; - identlevel: integer; - s: string; - taborder: integer; - - procedure AddChildWidgets(pwg: TfpgWidget; slist: TStrings); - var - f: integer; - fcd: TWidgetDesigner; - begin - for f := 0 to FWidgets.Count - 1 do - begin - fcd := TWidgetDesigner(FWidgets.Items[f]); - - if fcd.Widget.Parent = pwg then - begin - frm.list.Items.AddObject(StringOfChar(' ', identlevel) + fcd.Widget.Name + cDivider + fcd.Widget.ClassName, fcd); - Inc(identlevel, 2); - AddChildWidgets(fcd.Widget, slist); - Dec(identlevel, 2); - end; - - if fcd.Selected then - fi := f + 1; - end; - end; - -begin - frm := TWidgetOrderForm.Create(nil); - frm.WindowTitle := 'Tab Order'; - fi := 1; - identlevel := 0; - - AddChildWidgets(FForm, frm.list.Items); - - if fi <= frm.list.ItemCount then - frm.list.FocusItem := fi; - - if frm.ShowModal = 1 then - begin - taborder := 1; - for n := 0 to frm.List.Items.Count - 1 do - begin - try - if IsPublishedProp(TWidgetDesigner(frm.List.Items.Objects[n]).Widget, 'TabOrder') then - begin -// SetPropValue(TWidgetDesigner(frm.List.Items.Objects[n]).Widget, 'TabOrder', taborder); - TWidgetDesigner(frm.List.Items.Objects[n]).Widget.TabOrder := taborder; - inc(taborder); - end; - except - // do nothing. TabOrder was not published - end; - end; - end; { if } - frm.Free; -end; - -procedure TFormDesigner.DesignerKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); -var - dx, - dy: integer; -begin - dx := 0; - dy := 0; - consumed := True; - - case keycode of - keyLeft: dx := -1; - keyRight: dx := +1; - keyUp: dy := -1; - keyDown: dy := +1; - - keyDelete: DeleteWidgets; - - keyTab: - begin - if ssShift in shiftstate then - SelectNextWidget(False) // tab backwards - else - SelectNextWidget(True); // tab forward - end; - - keyF1: - ShowMessage('F11: switch to Properties' + LineEnding + - 'TAB, SHIFT+TAB: select next widget' + LineEnding + - 'F2: edit widget order' + LineEnding {+ - 'F4: edit items' + LineEnding}, 'Small help'); - - keyF2: - EditWidgetOrder; - - //keyF4: - //if frmProperties.btnEdit.Visible then - //frmProperties.btnEdit.Click; - - keyF11: - begin - frmProperties.SetFocus; - frmProperties.ActivateWindow; - end; - else - consumed := False; - end; - - if (dx <> 0) or (dy <> 0) then - if (ssShift in shiftstate) then - MoveResizeWidgets(0, 0, dx, dy) - else - MoveResizeWidgets(dx, dy, 0, 0); -end; - -procedure TFormDesigner.UpdatePropWin; -var - n, i: integer; - cd, scd: TWidgetDesigner; - wg: TfpgWidget; - - wgcnt: integer; - //btxt : boolean; - //bedit : boolean; - - lastpropname: string; - - wgc: TVFDWidgetClass; -begin - wgcnt := 0; - wg := FForm; - wgc := VFDFormWidget; - scd := nil; - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - begin - Inc(wgcnt); - if wgcnt < 2 then - begin - wg := cd.Widget; - scd := cd; - end; - end; - end; - - if scd <> nil then - wgc := scd.FVFDClass; - - n := frmProperties.lstProps.FocusItem; - if (n >= 0) and (PropList.GetItem(n) <> nil) then - lastpropname := PropList.GetItem(n).Name - else - lastpropname := ''; - - i := -1; - - if PropList.Widget <> wg then - begin - frmProperties.lstProps.ReleaseEditor; - PropList.Clear; - for n := 0 to wgc.PropertyCount-1 do - begin - PropList.AddItem(wgc.GetProperty(n)); - if UpperCase(wgc.GetProperty(n).Name) = UpperCase(lastPropName) then - i := n; - end; - PropList.Widget := wg; - frmProperties.lstProps.Update; - if i > -1 then - frmProperties.lstProps.FocusItem := i; - end; - - with frmProperties do - begin - if wg is TOtherWidget then - lbClass.Text := TOtherWidget(wg).wgClassName - else - lbClass.Text := wg.ClassName; - edName.Text := wg.Name; - - if scd <> nil then - edOther.Text := scd.other.Text - else - edOther.Text := FFormOther; - - edName.Visible := (wgcnt < 2); - edOther.Visible := (wgcnt < 2); - - lstProps.Update; - end; - - with frmProperties do - begin - btnLeft.Text := IntToStr(wg.Left); - btnTop.Text := IntToStr(wg.Top); - btnWidth.Text := IntToStr(wg.Width); - btnHeight.Text := IntToStr(wg.Height); - - btnAnLeft.Down := anLeft in wg.Anchors; - btnAnTop.Down := anTop in wg.Anchors; - btnAnRight.Down := anRight in wg.Anchors; - btnAnBottom.Down := anBottom in wg.Anchors; - end; - - Exit; - { - with PropertyForm do - begin - if wg is TOtherWidget then lbClass.Text8 := TOtherWidget(wg).wgClassName - else lbClass.Text8 := wg.ClassName; - - edName.Text8 := wg.Name; - - lbLeft.Text8 := IntToStr(wg.Left); - lbTop.Text8 := IntToStr(wg.Top); - lbWidth.Text8 := IntToStr(wg.Width); - lbHeight.Text8 := IntToStr(wg.Height); - - cbAL.Checked := anLeft in wg.Anchors; - cbAT.Checked := anTop in wg.Anchors; - cbAR.Checked := anRight in wg.Anchors; - cbAB.Checked := anBottom in wg.Anchors; - - btxt := true; - bedit := false; - lbText.Text := u8('Text:'); - - if wg is TGfxForm then edText.Text := TGfxForm(wg).WindowTitle - else if wg is TwgLabel then edText.Text := TwgLabel(wg).Text - else if wg is TwgEdit then edText.Text := TwgEdit(wg).Text - else if wg is TwgButton then edText.Text := TwgButton(wg).Text - else if wg is TwgCheckBox then edText.Text := TwgCheckBox(wg).Text - else btxt := false; - - if not btxt and ((wg is TwgMemo) or (wg is TwgChoiceList) or (wg is TwgTextListBox)) - then - begin - bedit := true; - lbText.Text := u8('Items:'); - btnEdit.Text := u8('Edit items...'); - end - else if (wg is TwgDBGrid) then - begin - bedit := true; - //lbText.Text := u8('Items:'); - btnEdit.Text := u8('Edit columns...'); - end; - - if scd <> nil then - begin - edOther.Text := str8to16(scd.other.Text); - end - else - begin - edOther.Text := str8to16(FFormOther); - end; - - edText.Visible := btxt; - lbText.Visible := btxt; - btnEdit.Visible := bedit; - edName.Visible := (wgcnt < 2); - edOther.Visible := (wgcnt < 2); - - end; // with PropertyForm -} -end; - -procedure TFormDesigner.OnPropTextChange(Sender: TObject); -{ -var - n : integer; - cd : TWidgetDesigner; - wg : TWidget; - s : string16; -} -begin - { - s := PropertyForm.edText.Text; - wg := nil; - for n:=0 to FWidgets.Count-1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - begin - wg := cd.Widget; - SetWidgetText(wg,s); - if wg is TwgLabel then - with TwgLabel(wg) do - begin - if Font.TextWidth16(Text) > width then - begin - Width := Font.TextWidth16(Text); - UpdateWindowPosition; - cd.UpdateResizerPositions; - end; - end; - end; - end; - - if wg = nil then - begin - FForm.WindowTitle := s; - end; -} -end; - -procedure TFormDesigner.OnPropNameChange(Sender: TObject); -var - n: integer; - cd: TWidgetDesigner; - wg: TfpgWidget; - s: string; -begin - // writeln('namechange'); - s := frmProperties.edName.Text; - wg := nil; - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - wg := cd.Widget; -{ - if GetWidgetText(wg,s) and (wg.Name = str16to8(s)) then - begin - PropertyForm.edText.Text8 := s8; - OnPropTextChange(sender); - end; -} - end; - - if wg = nil then - wg := FForm{ - if FForm.Name = FForm.WindowTitle8 then - begin - FForm.WindowTitle8 := s8; - PropertyForm.edText.Text8 := s8; - end; -}; - - try - wg.Name := s; - except - // invalid name... - end; -end; - -procedure TFormDesigner.OnPropPosEdit(Sender: TObject); -var - frm: TEditPositionForm; - ax: TfpgCoord; - ay: TfpgCoord; - wg: TfpgWidget; - n: integer; - cd: TWidgetDesigner; - posval: integer; - pt: TPoint; - - procedure SetNewPos(awg: TfpgWidget; pval: integer); - begin - if Sender = frmProperties.btnLeft then - awg.Left := pval - else if Sender = frmProperties.btnTop then - awg.Top := pval - else if Sender = frmProperties.btnWidth then - awg.Width := pval - else if Sender = frmProperties.btnHeight then - awg.Height := pval; - end; - -begin - wg := nil; - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - begin - wg := cd.Widget; - break; - end; - end; - - if wg = nil then - wg := Form; - - frm := TEditPositionForm.Create(nil); - - if Sender = frmProperties.btnLeft then - begin - frm.lbPos.Text := 'Left:'; - frm.edPos.Text := IntToStr(wg.Left); - end - else if Sender = frmProperties.btnTop then - begin - frm.lbPos.Text := 'Top:'; - frm.edPos.Text := IntToStr(wg.Top); - end - else if Sender = frmProperties.btnWidth then - begin - frm.lbPos.Text := 'Width:'; - frm.edPos.Text := IntToStr(wg.Width); - end - else if Sender = frmProperties.btnHeight then - begin - frm.lbPos.Text := 'Height:'; - frm.edPos.Text := IntToStr(wg.Height); - end; - - posval := -9999; - if frm.ShowModal = 1 then - posval := StrToIntDef(frm.edPos.Text, -9999); - frm.Free; - - if posval > -999 then - begin - wg := nil; - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - begin - wg := cd.Widget; - SetNewPos(wg, posval); - wg.UpdateWindowPosition; - cd.UpdateResizerPositions; - end; - end; - - if wg = nil then - begin - SetNewPos(FForm, posval); - FForm.UpdateWindowPosition; - end; - - end; - - UpdatePropWin; -end; - -procedure TFormDesigner.OnOtherChange(Sender: TObject); -var - n: integer; - cd: TWidgetDesigner; - s: string; - sc: integer; -begin - sc := 0; - s := frmProperties.edOther.Text; - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - begin - cd.other.Text := s; - Inc(sc); - end; - end; - - if sc < 1 then - FFormOther := s; -end; - -procedure TFormDesigner.OnAnchorChange(Sender: TObject); -var - n: integer; - cd: TWidgetDesigner; - wg: TfpgWidget; -begin - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - begin - wg := cd.Widget; - - wg.Anchors := []; - if frmProperties.btnAnLeft.Down then - wg.Anchors := wg.Anchors + [anLeft]; - if frmProperties.btnAnTop.Down then - wg.Anchors := wg.Anchors + [anTop]; - if frmProperties.btnAnRight.Down then - wg.Anchors := wg.Anchors + [anRight]; - if frmProperties.btnAnBottom.Down then - wg.Anchors := wg.Anchors + [anBottom]; - end; - end; -end; - -function TFormDesigner.GenerateNewName(namebase: string): string; -var - nind, n: integer; - cd: TWidgetDesigner; - newname: string; - bok: boolean; -begin - nind := 1; - repeat - newname := namebase + IntToStr(nind); - bok := True; - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Widget.Name = newname then - begin - bok := False; - break; - end; - end; - Inc(nind); - until bok; - Result := newname; -end; - - -procedure TFormDesigner.MsgActivate(var msg: TfpgMessageRec); -begin - msg.Stop := True; - maindsgn.SelectForm(self); -end; - -function TFormDesigner.GetFormSourceDecl: string; -var - n: integer; - wd: TWidgetDesigner; - wgclass: string; -begin - Result := ''; - for n := 0 to FWidgets.Count - 1 do - begin - wd := TWidgetDesigner(FWidgets.Items[n]); - if wd.Widget is TOtherWidget then - wgclass := TOtherWidget(wd.Widget).wgClassName - else - wgclass := wd.Widget.ClassName; - Result := Result + ' ' + wd.Widget.Name + ': ' + wgclass + ';' + LineEnding; - end; -end; - -function TFormDesigner.GetFormSourceImpl: string; -var - s: string; - sl: TStringList; - n: integer; - wd: TWidgetDesigner; - wg: TfpgWidget; - wgclass, pwgname: string; -begin - s := ''; - - if maindsgn.SaveComponentNames then - s := s + ' Name := ' + QuotedStr(FForm.Name) + ';' + LineEnding; - - s := s + ' SetPosition(' - + IntToStr(FForm.Left) + ', ' - + IntToStr(FForm.Top) + ', ' - + IntToStr(FForm.Width) + ', ' - + IntToStr(FForm.Height) + ');' + LineEnding; - -{ - // Extend this and the Form Parser to handle WindowPosition, Width and Height - case FForm.WindowPosition of - wpUser: - begin - s := s + ' SetPosition(' - + IntToStr(FForm.Left) + ', ' - + IntToStr(FForm.Top) + ', ' - + IntToStr(FForm.Width) + ', ' - + IntToStr(FForm.Height) + ');' + LineEnding; - end; - else - begin - s := s + 'WindowPosition := wpScreenCenter;' + LineEnding; - s := s + 'Width := ' + IntToStr(FForm.Width) + ';' + LineEnding - + 'Height := ' + IntToStr(FForm.Height) + ';' + LineEnding; - end; - end; -} - s := s + ' WindowTitle := ' + QuotedStr(FForm.WindowTitle) + ';' + LineEnding; - - //adding other form properties, idented - sl := TStringList.Create; - sl.Text := FFormOther; - for n := 0 to sl.Count - 1 do - s := s + ' ' + sl.Strings[n] + LineEnding; - sl.Free; - - s := s + LineEnding; - - // FORM WIDGETS - - for n := 0 to FWidgets.Count - 1 do - begin - wd := TWidgetDesigner(FWidgets.Items[n]); - wg := wd.Widget; - if wg.Parent = FForm then - pwgname := 'self' - else - pwgname := wg.Parent.Name; - if wg is TOtherWidget then - wgclass := TOtherWidget(wg).wgClassName - else - wgclass := wg.ClassName; - - s := s + ' ' + wg.Name + ' := ' + wgclass + '.Create(' + pwgname + ');' + LineEnding + - ' with ' + wg.Name + ' do' + LineEnding + ' begin' + LineEnding + GetWidgetSourceImpl(wd, ' ') + - ' end;' + LineEnding + LineEnding; - end; - - Result := s; -end; - -function TFormDesigner.GetWidgetSourceImpl(wd: TWidgetDesigner; ident: string): string; -var - ts, cs: string; - s: string; - wg: TfpgWidget; - wgc: TVFDWidgetClass; - n: integer; - - procedure SaveItems(Name: string; sl: TStringList); - var - f: integer; - begin - for f := 0 to sl.Count - 1 do - s := s + ident + Name + '.Add(' + QuotedStr(sl.Strings[f]) + ');' + LineEnding; - end; - - { procedure SaveColumns(grid : TwgDBGrid); - var - f : integer; - c : TDBColumn; - alstr : string; - begin - for f := 0 to grid.ColumnCount - 1 do - begin - c := grid.Columns[f]; - case c.Alignment of - alRight : alstr := 'alRight'; - alCenter : alstr := 'alCenter'; - else - alstr := 'alLeft'; - end; - s := s + ident + 'AddColumn8('+QuotedStr(u16u8safe(c.Title))+','+QuotedStr(c.FieldName8) - +','+IntToStr(c.Width)+','+alstr+');'#10; - end; - end; -} -begin - wg := wd.Widget; - wgc := wd.FVFDClass; - s := ''; - - if maindsgn.SaveComponentNames then - s := s + ident + 'Name := ' + QuotedStr(wg.Name) + ';' + LineEnding; - - s := s + ident + 'SetPosition(' - + IntToStr(wg.Left) + ', ' - + IntToStr(wg.Top) + ', ' - + IntToStr(wg.Width) + ', ' - + IntToStr(wg.Height) + ');' + LineEnding; - - if wg.Anchors <> [anLeft, anTop] then - begin - ts := '['; - cs := ''; - if anLeft in wg.Anchors then - begin - ts := ts + cs + 'anLeft'; - cs := ','; - end; - if anRight in wg.Anchors then - begin - ts := ts + cs + 'anRight'; - cs := ','; - end; - if anTop in wg.Anchors then - begin - ts := ts + cs + 'anTop'; - cs := ','; - end; - if anBottom in wg.Anchors then - begin - ts := ts + cs + 'anBottom'; - cs := ','; - end; - ts := ts + '];'; - s := s + ident + 'Anchors := ' + ts + LineEnding; - end; - - for n := 0 to wgc.PropertyCount-1 do - s := s + wgc.GetProperty(n).GetPropertySource(wg, ident); - - { - if wg is TwgMemo then - begin - SaveItems('Lines',TwgMemo(wg).Lines); - end - else if wg is TwgChoiceList then - begin - SaveItems('Items',TwgChoiceList(wg).Items); - end - else if wg is TwgTextListBox then - begin - SaveItems('Items',TwgTextListBox(wg).Items); - end - else if wg is TwgDBGrid then - begin - SaveColumns(TwgDBGrid(wg)); - end - else - if GetWidgetText(wg, ts) then - begin - s := s + ident + 'Text := u8('+QuotedStr(u8encode(ts))+');'#10; // encoding with all printable characters - end; -} - - for n := 0 to wd.other.Count - 1 do - if trim(wd.other.Strings[n]) <> '' then - s := s + ident + wd.other.Strings[n] + LineEnding; - - Result := s; -end; - -procedure TFormDesigner.OnEditWidget(Sender: TObject); -var - n: integer; - cd: TWidgetDesigner; - wg: TfpgWidget; -begin - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if cd.Selected then - begin - wg := cd.Widget; - - // Running widget editor; - RunWidgetEditor(cd, wg); - - Exit; - end; - end; -end; - -procedure EditItems(sl: TStringList); -var - frmie: TItemEditorForm; - //ax,ay : integer; -begin - frmie := TItemEditorForm.Create(nil); - //GfxGetAbsolutePosition(PropertyForm.btnEdit.WinHandle, PropertyForm.btnEdit.width, 0, ax,ay); - //frmie.Left := ax; - //frmie.Top := ay; - - frmie.edItems.Lines.Assign(sl); - if frmie.ShowModal = 1 then - begin -// Writeln('OK'); - sl.Assign(frmie.edItems.Lines); - end; - frmie.Free; -end; - -procedure TFormDesigner.RunWidgetEditor(wgd: TWidgetDesigner; wg: TfpgWidget); -begin - if wg is TfpgMemo then - begin - EditItems(TfpgMemo(wg).Lines); - wg.Invalidate; - end - else if wg is TfpgComboBox then - begin - EditItems(TfpgComboBox(wg).Items); - wg.Invalidate; - end - else if wg is TfpgListBox then - begin - EditItems(TfpgListBox(wg).Items); - wg.Invalidate; - end; -end; - -procedure TFormDesigner.InsertWidget(pwg: TfpgWidget; x, y: integer; wgc: TVFDWidgetClass); -var - cfrm: TInsertCustomForm; - newname, newclassname: string; - wg: TfpgWidget; - wgd: TWidgetDesigner; -begin -// writeln('TFormDesigner.InsertWidget'); - if wgc = nil then - Exit; - - newname := ''; - - if wgc.WidgetClass = TOtherWidget then - begin - newclassname := ''; - cfrm := TInsertCustomForm.Create(nil); - cfrm.edName.Text := GenerateNewName(wgc.NameBase); - cfrm.edClass.Text := 'Tfpg'; - if cfrm.ShowModal = 1 then - begin - newname := cfrm.edName.Text; - newClassName := cfrm.edClass.Text; - end; - cfrm.Free; - if (newname = '') or (newclassname = '') then - Exit; - end; - - wg := wgc.CreateWidget(pwg); - if wg <> nil then - begin - wg.FormDesigner := self; - if newname = '' then - newname := GenerateNewName(wgc.NameBase); - wg.Name := newname; - if wgc.WidgetClass = TOtherWidget then - TOtherWidget(wg).wgClassName := newclassname; - wgd := AddWidget(wg, wgc); - wg.Visible := True; - wg.SetPosition(x, y, wg.Width, wg.Height); - DeSelectAll; - wgd.Selected := True; - UpdatePropWin; - end; -end; - -function TFormDesigner.FindWidgetByName(const wgname: string): TfpgWidget; -var - n: integer; - wgnameuc: string; - cd: TWidgetDesigner; -begin - wgnameuc := UpperCase(wgname); - Result := nil; - for n := 0 to FWidgets.Count - 1 do - begin - cd := TWidgetDesigner(FWidgets.Items[n]); - if UpperCase(cd.Widget.Name) = wgnameuc then - begin - Result := cd.Widget; - Exit; - end; - end; -end; - -{ TDesignedForm } - -procedure TDesignedForm.AfterCreate; -begin - inherited AfterCreate; - WindowPosition := wpUser; - WindowTitle := 'New Form'; - SetPosition(300, 150, 300, 250); -end; - - -{ TOtherWidget } - -procedure TOtherWidget.HandlePaint; -var - s: string; -begin - Canvas.Clear(FBackgroundColor); - Canvas.SetFont(FFont); - Canvas.SetColor(clWidgetFrame); - Canvas.DrawRectangle(0, 0, Width, Height); - Canvas.SetTextColor(clText1); - s := Name + ': ' + wgClassName; - Canvas.DrawString(2, 2, s); -end; - -constructor TOtherWidget.Create(AOwner: TComponent); -begin - inherited; - wgClassName := 'TfpgWidget'; - FBackgroundColor := $C0E0C0; - FFont := fpgStyle.DefaultFont; - FWidth := 120; - FHeight := 32; -end; - -end. - diff --git a/examples/apps/uidesigner/vfdeditors.pas b/examples/apps/uidesigner/vfdeditors.pas deleted file mode 100644 index 0c4e081f..00000000 --- a/examples/apps/uidesigner/vfdeditors.pas +++ /dev/null @@ -1,98 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - Some property editors. -} - -unit vfdeditors; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, - SysUtils, - gfx_widget, - gui_label, - gui_button, - gui_memo, - vfdforms; - -type - - TItemEditorForm = class(TVFDDialog) - private - procedure btnClearClicked(Sender: TObject); - procedure OnButtonClick(Sender: TObject); - public - l1: TfpgLabel; - edItems: TfpgMemo; - btnOK: TfpgButton; - btnCancel: TfpgButton; - btnClear: TfpgButton; - procedure AfterCreate; override; - end; - - -implementation - -uses - gfxbase, - fpgfx; - -{ TItemEditorForm } - -procedure TItemEditorForm.AfterCreate; -begin - inherited; - WindowTitle := 'Items'; - SetPosition(0, 0, 360, 230); - - l1 := CreateLabel(self, 8, 4, 'Items:'); - - edItems := TfpgMemo.Create(self); - with edItems do - begin - SetPosition(8, 24, 344, 168); - Anchors := AllAnchors; - end; - - btnClear := CreateButton(self, 8, 200, 80, 'Clear', @btnClearClicked); - btnClear.Anchors := [anLeft, anBottom]; - - btnOK := CreateButton(self, btnClear.Right + 4, 200, 80, 'OK', @OnButtonClick); - btnOK.Anchors := [anLeft, anBottom]; - - btnCancel := CreateButton(self, Width-84, 200, 80, 'Cancel', @OnButtonClick); - btnCancel.Anchors := [anRight, anBottom]; - -end; - -procedure TItemEditorForm.btnClearClicked(Sender: TObject); -begin - edItems.Lines.Clear; -end; - -procedure TItemEditorForm.OnButtonClick(Sender: TObject); -begin - if Sender = btnOK then - ModalResult := mrOK - else - ModalResult := mrCancel; -end; - - -end. - diff --git a/examples/apps/uidesigner/vfdfile.pas b/examples/apps/uidesigner/vfdfile.pas deleted file mode 100644 index 16910883..00000000 --- a/examples/apps/uidesigner/vfdfile.pas +++ /dev/null @@ -1,388 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - This unit handles the load, save and merge functions. Doing - marker searching. -} - -unit vfdfile; - -{$mode objfpc}{$H+} - -interface - -uses - SysUtils, - Classes, - gfx_utils; - -type - TVFDFileBlock = class - public - BlockID: string; - FormName: string; - Position: integer; - Data: string; - end; - - - TVFDFile = class - protected - FFileData: string; - FParsedData: string; - FBlocks: TList; - public - NewFormsDecl: string; - NewFormsImpl: string; - constructor Create; - destructor Destroy; override; - function LoadFile(fname: string): boolean; - procedure AddBlock(aposition: integer; ablockid, aformname, ablockdata: string); - function BlockCount: integer; - function Block(index: integer): TVFDFileBlock; - procedure FreeBlocks; - function GetBlocks: integer; // parse file - function MergeBlocks: string; // store file - procedure AddNewFormDecl(formname, formheadblock: string); - procedure AddNewFormImpl(formname, formbody: string); - function FindFormBlock(blockid, formname: string): TVFDFileBlock; - procedure SetFormData(formname, headblock, bodyblock: string); - procedure NewFileSkeleton(unitname: string); - end; - - -implementation - -{ TVFDFile } - -procedure TVFDFile.AddBlock(aposition: integer; ablockid, aformname, ablockdata: string); -var - fb: TVFDFileBlock; -begin - fb := TVFDFileBlock.Create; - fb.Position := aposition; - fb.BlockID := ablockid; - fb.FormName := aformname; - fb.Data := ablockdata; - FBlocks.Add(fb); -end; - -procedure TVFDFile.AddNewFormDecl(formname, formheadblock: string); -var - s: string; -begin - s := - ' T' + formname + ' = class(TfpgForm)' + LineEnding + - ' public' + LineEnding + - ' {@VFD_HEAD_BEGIN: ' + formname + '}' + LineEnding + - formheadblock + - ' {@VFD_HEAD_END: ' + formname + '}' + LineEnding + - ' procedure AfterCreate; override;' + LineEnding - + ' end;' + LineEnding + LineEnding; - NewFormsDecl := NewFormsDecl + s; -end; - -procedure TVFDFile.AddNewFormImpl(formname, formbody: string); -var - s: string; -begin - s := LineEnding + LineEnding + - 'procedure T' + formname + '.AfterCreate;' + LineEnding + - 'begin' + LineEnding + - ' {@VFD_BODY_BEGIN: ' + formname + '}' + LineEnding + - formbody + - ' {@VFD_BODY_END: ' + formname + '}' + LineEnding + - 'end;' + LineEnding; - NewFormsImpl := NewFormsImpl + s; -end; - -function TVFDFile.Block(index: integer): TVFDFileBlock; -begin - Result := nil; - if (index < 0) or (index > FBlocks.Count-1) then - Exit; - Result := TVFDFileBlock(FBlocks[index]); -end; - -function TVFDFile.BlockCount: integer; -begin - Result := FBlocks.Count; -end; - -constructor TVFDFile.Create; -begin - FFileData := ''; - FParsedData := ''; - NewFormsDecl := ''; - NewFormsImpl := ''; - FBlocks := TList.Create; -end; - -destructor TVFDFile.Destroy; -begin - FreeBlocks; - FBlocks.Free; - inherited; -end; - -function TVFDFile.FindFormBlock(blockid, formname: string): TVFDFileBlock; -var - n: integer; - fb: TVFDFileBlock; -begin - Result := nil; - for n := 0 to BlockCount-1 do - begin - fb := Block(n); - if (fb.BlockID = blockid) and (UpperCase(fb.FormName) = UpperCase(formname)) then - begin - Result := fb; - Exit; - end; - end; -end; - -procedure TVFDFile.FreeBlocks; -var - n: integer; -begin - for n := 0 to FBlocks.Count-1 do - TVFDFileBlock(FBlocks[n]).Free; - FBlocks.Clear; - NewFormsDecl := ''; - NewFormsImpl := ''; -end; - -function TVFDFile.GetBlocks: integer; -var - n: integer; - - s: string; - - startp, endp: integer; - formname: string; - bname, startmarker, endmarker: string; - datablock: string; - deletelen: integer; - - dropmarker: boolean; -begin - FreeBlocks; - - FParsedData := FFileData; - - // searching blocks: - - repeat - - bname := ''; - formname := ''; - datablock := ''; - - s := '{@VFD_'; - startp := pos(s, FParsedData); - if startp > 0 then - begin - // marker found - n := startp + 2; - while (n < length(FParsedData)) and (FParsedData[n] in ['_', 'A'..'Z']) do - begin - bname := bname + FParsedData[n]; - Inc(n); - end; - - if FParsedData[n] = ':' then - Inc(n, 2); - - while (n < length(FParsedData)) and (FParsedData[n] <> '}') do - begin - formname := formname + FParsedData[n]; - Inc(n); - end; - - startmarker := copy(FParsedData, startp, n - startp + 1); - deletelen := length(startmarker); - dropmarker := False; - -// Writeln('marker: ', startmarker); - - // block marker ? - - endmarker := ''; - if bname = 'VFD_HEAD_BEGIN' then //or (bname = 'VFD_BODY_BEGIN') then - endmarker := '{@VFD_HEAD_END: ' + formname + '}' - else if bname = 'VFD_BODY_BEGIN' then - endmarker := '{@VFD_BODY_END: ' + formname + '}'; - - if endmarker <> '' then - begin - //Writeln('Block: ',bname,' form: ',formname); - // find the end of the block - endp := pos(endmarker, FParsedData); - if endp > 0 then - begin - //Writeln('end marker found.'); - datablock := copy(FParsedData, startp + length(startmarker), endp - startp - length(startmarker)); - //Writeln('data block:'); - //writeln(datablock); - //writeln('.'); - deletelen := endp - startp + length(endmarker); - end - else - dropmarker := True// error: end marker did not found - //Writeln('file error: ',endmarker,' marker wasn''t found.'); - // block length = 0 - ; - end; - - Delete(FParsedData, startp, deletelen); - - if not dropmarker then - AddBlock(startp, bname, formname, datablock); - - end; - - until startp <= 0; - - //writeln(FParsedData); - - Result := BlockCount; -end; - -function TVFDFile.LoadFile(fname: string): boolean; -var - ff: file; - s: string; - cnt: integer; -begin - Result := False; - AssignFile(ff, fpgToOSEncoding(fname)); - try - Reset(ff, 1); - except - Exit; - end; - - FFileData := ''; - try - while not EOF(ff) do - begin - SetLength(s, 4096); - BlockRead(ff, s[1], length(s), cnt); - FFileData := FFileData + copy(s, 1, cnt); - if cnt < length(s) then - break; - end; - Result := True; - finally - CloseFile(ff); - end; - //Writeln('data length: ',length(FFileData)); -end; - -function TVFDFile.MergeBlocks: string; -var - rs: string; - n: integer; - iofs, startp: integer; - fb: TVFDFileBlock; - startmarker, endmarker: string; - iblock: string; - - newsaved: boolean; - -begin - // Writeln('merging blocks: '); - newsaved := False; - rs := FParsedData; - iofs := 0; - for n := 0 to FBlocks.Count - 1 do - begin - fb := TVFDFileBlock(FBlocks[n]); - startmarker := '{@' + fb.BlockID; - if fb.formname <> '' then - startmarker := startmarker + ': ' + fb.FormName; - startmarker := startmarker + '}'; - if fb.BlockID = 'VFD_HEAD_BEGIN' then - endmarker := ' {@VFD_HEAD_END: ' + fb.FormName + '}' - else if fb.BlockID = 'VFD_BODY_BEGIN' then - endmarker := ' {@VFD_BODY_END: ' + fb.FormName + '}' - else - endmarker := ''; - - iblock := startmarker; - if endmarker <> '' then - iblock := iblock + LineEnding + fb.Data + endmarker; - - if fb.BlockID = 'VFD_NEWFORM_DECL' then - iblock := NewFormsDecl + iblock - else if fb.BlockID = 'VFD_NEWFORM_IMPL' then - begin - iblock := iblock + NewFormsImpl; - newsaved := True; - end; - - startp := fb.Position + iofs; - insert(iblock, rs, startp); - Inc(iofs, length(iblock)); - end; - - if not newsaved and (NewFormsImpl <> '') then - rs := rs + NewFormsImpl; // do not loose new form data. - - Result := rs; -end; - -procedure TVFDFile.NewFileSkeleton(unitname: string); -begin - FFileData := - 'unit ' + unitname + ';'+ LineEnding + LineEnding + - '{$mode objfpc}{$H+}' + LineEnding + LineEnding + - 'interface' + LineEnding + LineEnding + - 'uses' + LineEnding + - ' SysUtils, Classes, gfxbase, fpgfx, gui_edit, ' + LineEnding + - ' gfx_widget, gui_form, gui_label, gui_button,' + LineEnding + - ' gui_listbox, gui_memo, gui_combobox, gui_basegrid, gui_grid, ' + LineEnding + - ' gui_dialogs, gui_checkbox, gui_tree, gui_trackbar, ' + LineEnding + - ' gui_progressbar, gui_radiobutton, gui_tab, gui_menu,' + LineEnding + - ' gui_panel, gui_popupcalendar, gui_gauge;' + LineEnding + LineEnding + - 'type' + LineEnding + LineEnding + - '{@VFD_NEWFORM_DECL}' + LineEnding + LineEnding + - 'implementation' + LineEnding + LineEnding + - '{@VFD_NEWFORM_IMPL}' + LineEnding + LineEnding + - 'end.' + LineEnding; - - GetBlocks; -end; - -procedure TVFDFile.SetFormData(formname, headblock, bodyblock: string); -var - fb: TVFDFileBlock; -begin - fb := FindFormBlock('VFD_HEAD_BEGIN', formname); - if fb <> nil then - fb.Data := HeadBlock - else - AddNewFormDecl(formname, headblock); - - fb := FindFormBlock('VFD_BODY_BEGIN', formname); - if fb <> nil then - fb.Data := bodyblock - else - AddNewFormImpl(formname, bodyblock); -end; - - -end. - diff --git a/examples/apps/uidesigner/vfdformparser.pas b/examples/apps/uidesigner/vfdformparser.pas deleted file mode 100644 index a3d7c966..00000000 --- a/examples/apps/uidesigner/vfdformparser.pas +++ /dev/null @@ -1,545 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - Some Pascal source code parsing functionality. -} - -unit vfdformparser; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, - SysUtils, - fpgfx, - gfx_widget, - gui_form, - vfddesigner, - vfdwidgetclass, - vfdwidgets; - -type - TVFDFormParser = class(TObject) - protected - ffd: TFormDesigner; - fformname: string; - BodyLines: TStringList; - eob: boolean; - line: string; - lineindex: integer; - public - procedure NextLine; - public - constructor Create(const FormName, FormHead, FormBody: string); - destructor Destroy; override; - function ParseForm: TFormDesigner; - procedure ParseFormProperties; - procedure ParseFormWidgets; - function ReadWGProperty(propline: string; wg: TfpgWidget; wgc: TVFDWidgetClass): boolean; - end; - - -function GetIdentifier(var s: string): string; -function GetStringValue(var s: string): string; -procedure SkipSpaces(var s: string); -function CheckSymbol(var s: string; const sym: string): boolean; -function GetIntValue(var s: string): integer; -function GetBoolValue(var s: string): boolean; - - -implementation - - -{ TVFDFormParser } - -constructor TVFDFormParser.Create(const FormName, FormHead, FormBody: string); -begin - fformname := FormName; - ffd := nil; - BodyLines := TStringList.Create; - BodyLines.Text := FormBody; - lineindex := -1; -end; - -destructor TVFDFormParser.Destroy; -begin - BodyLines.Free; - inherited; -end; - -procedure TVFDFormParser.NextLine; -begin - repeat - Inc(lineindex); - eob := (lineindex > BodyLines.Count-1); - if not eob then - line := trim(bodylines.Strings[lineindex]) - else - line := ''; - until eob or (line <> ''); -end; - -function TVFDFormParser.ParseForm: TFormDesigner; -begin - ffd := TFormDesigner.Create; - ffd.Form.Name := fformname; - // parsing line by line - // the unknown lines will be "other properties" - lineindex := -1; - NextLine; - ParseFormProperties; - ParseFormWidgets; - Result := ffd; -end; - -procedure SkipSpaces(var s: string); -begin - while (s <> '') and (s[1] in [' ', #9, #13, #10]) do - Delete(s, 1, 1); -end; - -function CheckSymbol(var s: string; const sym: string): boolean; -begin - SkipSpaces(s); - Result := (pos(sym, s) = 1); - if Result then - Delete(s, 1, length(sym)); -end; - -function GetIntValue(var s: string): integer; -var - n: integer; - ns: string; -begin - SkipSpaces(s); - ns := ''; - n := 1; - while (n <= length(s)) and (s[n] in ['0'..'9', '-']) do - begin - ns := ns + s[n]; - Inc(n); - end; - Result := StrToIntDef(ns, 0); - Delete(s, 1, length(ns)); -end; - -function GetBoolValue(var s: string): boolean; -var - ts: string; - fs: string; -begin - SkipSpaces(s); - ts := copy(s, 1, 4); // true string - fs := copy(s, 1, 5); // false string - if UpperCase(ts) = 'TRUE' then - Result := True - else if UpperCase(fs) = 'FALSE' then - Result := False - else - raise exception.Create('Failed to parse Boolean value <' + s + '>'); - - if Result then - Delete(s, 1, 4) - else - Delete(s, 1, 5); -end; - -function GetStringValue(var s: string): string; -var - n: integer; - quot: boolean; - c, prevc: char; - ccode: string; - ids: string; -begin - Result := ''; - ids := GetIdentifier(s); - if ids <> '' then -{ if ids = 'u8' then - begin - if not CheckSymbol(s, '(') then - Exit; - end - else - Exit; -} - SkipSpaces(s); - prevc := #0; - n := 1; - quot := False; - while n <= length(s) do - begin - c := s[n]; - if c = '''' then - begin - quot := not quot; - if quot and (prevc = '''') then - Result := Result + c; - end - else if not quot then - begin - if not (c in ['+', ' ', #9, #13, #10]) then - if (c = '#') then - begin - Inc(n); - ccode := ''; - while (n <= length(s)) and (s[n] in ['0'..'9']) do - begin - ccode := ccode + s[n]; - Inc(n); - end; - c := chr(StrToIntDef(ccode, Ord('?')) and $FF); - Result := Result + c; - end - else - break; - end - else - Result := Result + c; - prevc := c; - Inc(n); - end; - if (n - 1) > 0 then - Delete(s, 1, n - 1); - - SkipSpaces(s); -// if ids <> '' then -// CheckSymbol(s, ')'); -// if ids = 'u8' then -// Result := u8(Result); -end; - -function GetIdentifier(var s: string): string; -var - n: integer; -begin - SkipSpaces(s); - Result := ''; - n := 1; - while n <= length(s) do - begin - if s[n] in ['_', 'a'..'z', 'A'..'Z', '0'..'9'] then - Result := Result + s[n] - else - Break; - Inc(n); - end; - if length(Result) > 0 then - Delete(s, 1, length(Result)); -end; - -procedure TVFDFormParser.ParseFormProperties; -var - lok: boolean; -begin - while not eob and (pos('.CREATE(', UpperCase(line)) = 0) do - begin - lok := ReadWGProperty(line, ffd.Form, VFDFormWidget); - if not lok then - ffd.FormOther := ffd.FormOther + line + LineEnding; - NextLine; - end; -end; - -procedure TVFDFormParser.ParseFormWidgets; -var - n: integer; - lok: boolean; - s: string; - ident: string; - wgname, wgclass, wgclassuc, wgparent: string; - pwg, wg: TfpgWidget; - wgother: string; - wd: TWidgetDesigner; - wgc: TVFDWidgetClass; -begin - while not eob do - begin - //s := UpperCase(line); - s := line; - - wgname := GetIdentifier(s); - //writeln('wg: ',wgname); - lok := CheckSymbol(s, ':='); - if lok then - wgclass := GetIdentifier(s); - lok := lok and CheckSymbol(s, '.'); - lok := lok and (UpperCase(GetIdentifier(s)) = 'CREATE'); - lok := lok and CheckSymbol(s, '('); - if lok then - wgparent := GetIdentifier(s); - lok := lok and CheckSymbol(s, ')'); - lok := lok and CheckSymbol(s, ';'); - - if lok then - begin -// writeln('wg create: ',wgname,' (',wgclass,') - ',wgparent); - - // searching for the parent ... - pwg := nil; - if UpperCase(wgparent) <> 'SELF' then - begin - pwg := ffd.FindWidgetByName(wgparent); - if pwg = nil then - Writeln('Warning! Parent object "' + wgparent + '" not found for "' + wgname + '"'); - end; - if pwg = nil then - pwg := ffd.Form; - - wgclassuc := UpperCase(wgclass); - - wg := nil; - wgc := nil; - for n := 0 to VFDWidgetCount-1 do - begin - wgc := VFDWidget(n); - if wgclassuc = UpperCase(wgc.WidgetClass.ClassName) then - begin - wg := wgc.CreateWidget(pwg); - break; - end; - end; - - if wg = nil then - begin - wgc := VFDOtherWidget; - wg := TOtherWidget.Create(pwg); - TOtherWidget(wg).wgClassName := wgclass; - end; - - wg.Name := wgname; - wg.FormDesigner := ffd; - - NextLine; - s := UpperCase(line); - ident := GetIdentifier(s); - if ident = 'WITH' then - begin - // skip with line... - NextLine; - - s := UpperCase(line); - ident := GetIdentifier(s); - if ident = 'BEGIN' then - NextLine; - - // reading widget properties... - wgother := ''; - - while (not eob) and (pos('END;', UpperCase(line)) <> 1) do - begin - lok := ReadWGProperty(line, wg, wgc); - if not lok then - wgother := wgother + line + LineEnding; - nextline; - end; - - if (pos('END;', UpperCase(line)) = 1) then - nextline; - - end; - - wd := ffd.AddWidget(wg, nil); - wd.FVFDClass := wgc; - wd.other.Text := wgother; - - end - else - begin - ffd.FormOther := ffd.FormOther + line + LineEnding; - NextLine; - end; - - end; -end; - -function TVFDFormParser.ReadWGProperty(propline: string; wg: TfpgWidget; wgc: TVFDWidgetClass): boolean; -var - s: string; - n: integer; - ident: string; - lok: boolean; - sval: string; - wga: TAnchors; -begin - s := propline; - - ident := UpperCase(GetIdentifier(s)); - //writeln('ident: ',ident); - sval := ''; - - lok := False; - - if ident = 'NAME' then - begin - lok := CheckSymbol(s, ':='); - if lok then - begin - sval := GetStringValue(s); - lok := CheckSymbol(s, ';'); - end; - if lok then - wg.Name := sval; - end - { - else if ident = 'TEXT' then - begin - lok := CheckSymbol(s, ':='); - if lok then - begin - sval := GetStringValue(s); - lok := CheckSymbol(s, ';'); - end; - if lok then - begin - if wg is TwgLabel then TwgLabel(wg).Text := sval - else if wg is TwgEdit then TwgEdit(wg).Text := sval - else if wg is TwgButton then TwgButton(wg).Text := sval - else if wg is TwgCheckBox then TwgCheckBox(wg).Text := sval - else - lok := false; - end; - if lok then SetWidgetText(wg, sval); - end - else if (ident = 'LINES') or (ident = 'ITEMS') then - begin - lok := CheckSymbol(s, '.'); - lok := lok and (UpperCase(GetIdentifier(s)) = 'ADD'); - lok := lok and CheckSymbol(s, '('); - if lok then - begin - sval := GetStringValue(s); - lok := lok and CheckSymbol(s, ')'); - lok := lok and CheckSymbol(s, ';'); - end; - if lok then - begin - if wg is TwgMemo then TwgMemo(wg).Lines.Add(sval) - else if wg is TwgChoiceList then TwgChoiceList(wg).Items.Add(sval) - else if wg is TwgTextListBox then TwgTextListBox(wg).Items.Add(sval) - else - lok := false; - end; - end -} - else if ident = 'ANCHORS' then - begin - lok := CheckSymbol(s, ':='); - lok := lok and CheckSymbol(s, '['); - if lok then - begin - wga := []; - repeat - sval := UpperCase(GetIdentifier(s)); - if sval = 'ANLEFT' then - wga := wga + [anLeft] - else if sval = 'ANTOP' then - wga := wga + [anTop] - else if sval = 'ANRIGHT' then - wga := wga + [anRight] - else if sval = 'ANBOTTOM' then - wga := wga + [anBottom]; - until not CheckSymbol(s, ','); - end; - lok := lok and CheckSymbol(s, ']'); - lok := lok and CheckSymbol(s, ';'); - - if lok then - wg.Anchors := wga; - end - else if ident = 'WINDOWTITLE' then - begin - lok := (wg is TfpgForm); - if lok then - begin - lok := CheckSymbol(s, ':='); - if lok then - begin - sval := GetStringValue(s); - lok := CheckSymbol(s, ';'); - end; - if lok then - TfpgForm(wg).WindowTitle := sval; - end; - end - else if ident = 'SETPOSITION' then - begin - lok := CheckSymbol(s, '('); - if lok then - wg.Left := GetIntValue(s); - lok := lok and CheckSymbol(s, ','); - if lok then - wg.Top := GetIntValue(s); - lok := lok and CheckSymbol(s, ','); - if lok then - wg.Width := GetIntValue(s); - lok := lok and CheckSymbol(s, ','); - if lok then - wg.Height := GetIntValue(s); - lok := lok and CheckSymbol(s, ')'); - lok := lok and CheckSymbol(s, ';'); - //if lok then Writeln('sd ok.'); - //writeln('WT: ',sval); - end - { - else if (wg is TwgDBGrid) and (ident = 'ADDCOLUMN8') then - begin - c := TDBColumn.Create; - lok := CheckSymbol(s, '('); - - if lok then c.Title := u8(GetStringValue(s)); - lok := lok and CheckSymbol(s, ','); - if lok then c.FieldName8 := GetStringValue(s); - lok := lok and CheckSymbol(s, ','); - if lok then c.Width := GetIntValue(s); - lok := lok and CheckSymbol(s, ','); - if lok then - begin - sval := UpperCase(GetIdentifier(s)); - if sval = 'ALRIGHT' then c.Alignment := alRight - else if sval = 'ALCENTER' then c.Alignment := alCenter - else c.Alignment := alLeft; - end; - - lok := lok and CheckSymbol(s, ')'); - lok := lok and CheckSymbol(s, ';'); - - if lok then - begin - TwgDBGrid(wg).AddColumn(c.Title, c.FieldName8, c.Width, c.Alignment) - end; - - c.Free; - end; -}; - - if not lok then - if wgc <> nil then - for n := 0 to wgc.PropertyCount-1 do - begin - lok := wgc.GetProperty(n).ParseSourceLine(wg, line); - if lok then - Break; - end; - - if not lok then - Writeln('unknown: ', line); - - Result := lok; -end; - -end. - diff --git a/examples/apps/uidesigner/vfdforms.pas b/examples/apps/uidesigner/vfdforms.pas deleted file mode 100644 index 61ce43c2..00000000 --- a/examples/apps/uidesigner/vfdforms.pas +++ /dev/null @@ -1,587 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - The main uiDesigner forms. -} - -unit vfdforms; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, - SysUtils, - gfxbase, - gfx_widget, - gui_form, - gui_label, - gui_edit, - gui_button, - gui_listbox, - gui_combobox, - gui_trackbar, - gui_checkbox; - -type - - TVFDDialog = class(TfpgForm) - protected - procedure HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); override; - end; - - - TInsertCustomForm = class(TVFDDialog) - public - l1, - l2: TfpgLabel; - edClass: TfpgEdit; - edName: TfpgEdit; - btnOK: TfpgButton; - btnCancel: TfpgButton; - procedure AfterCreate; override; - procedure OnButtonClick(Sender: TObject); - end; - - - TNewFormForm = class(TVFDDialog) - private - procedure OnedNameKeyPressed(Sender: TObject; var KeyCode: word; - var ShiftState: TShiftState; var Consumed: boolean); - public - l1: TfpgLabel; - edName: TfpgEdit; - btnOK: TfpgButton; - btnCancel: TfpgButton; - procedure AfterCreate; override; - procedure OnButtonClick(Sender: TObject); - end; - - - TEditPositionForm = class(TVFDDialog) - private - procedure edPosKeyPressed(Sender: TObject; var KeyCode: word; - var ShiftState: TShiftState; var Consumed: boolean); - public - lbPos: TfpgLabel; - edPos: TfpgEdit; - btnOK: TfpgButton; - btnCancel: TfpgButton; - procedure AfterCreate; override; - procedure OnButtonClick(Sender: TObject); - end; - - - TWidgetOrderForm = class(TVFDDialog) - public - {@VFD_HEAD_BEGIN: WidgetOrderForm} - l1: TfpgLabel; - list: TfpgListBox; - btnOK: TfpgButton; - btnCancel: TfpgButton; - btnUp: TfpgButton; - btnDown: TfpgButton; - {@VFD_HEAD_END: WidgetOrderForm} - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure AfterCreate; override; - procedure OnButtonClick(Sender: TObject); - end; - - - TfrmVFDSetup = class(TfpgForm) - private - procedure LoadSettings; - procedure SaveSettings; - procedure btnOKClick(Sender: TObject); - public - {@VFD_HEAD_BEGIN: frmVFDSetup} - lb1: TfpgLabel; - chlGrid: TfpgComboBox; - btnOK: TfpgButton; - btnCancel: TfpgButton; - lblRecentFiles: TfpgLabel; - tbMRUFileCount: TfpgTrackBar; - cbFullPath: TfpgCheckBox; - lblName1: TfpgLabel; - lblName2: TfpgLabel; - eDefaultExt: TfpgEdit; - lblName3: TfpgLabel; - cbUndoOnExit: TfpgCheckBox; - {@VFD_HEAD_END: frmVFDSetup} - procedure AfterCreate; override; - procedure BeforeDestruction; override; - end; - - - -implementation - -uses - fpgfx, - gui_iniutils, - gfx_constants, - vfdprops; // used to get Object Inspector defaults - - -{ TInsertCustomForm } - -procedure TInsertCustomForm.AfterCreate; -begin - inherited; - WindowPosition := wpScreenCenter; - WindowTitle := 'Insert Custom Widget'; - SetPosition(0, 0, 300, 100); - - l1 := CreateLabel(self, 8, 4, 'Class name:'); - edClass := CreateEdit(self, 8, 24, 150, 0); - edClass.Text := 'Tfpg'; - l2 := CreateLabel(self, 8, 48, 'Name:'); - edName := CreateEdit(self, 8, 68, 150, 0); - btnOK := CreateButton(self, 180, 20, 100, 'OK', @OnButtonClick); - btnCancel := CreateButton(self, 180, 52, 100, 'Cancel', @OnButtonClick); -end; - -procedure TInsertCustomForm.OnButtonClick(Sender: TObject); -begin - if Sender = btnOK then - ModalResult := 1 - else - ModalResult := 2; -end; - -{ TNewFormForm } - -procedure TNewFormForm.OnedNameKeyPressed(Sender: TObject; var KeyCode: word; - var ShiftState: TShiftState; var Consumed: boolean); -begin - if (KeyCode = keyEnter) or (KeyCode = keyPEnter) then - btnOK.Click; -end; - -procedure TNewFormForm.AfterCreate; -begin - inherited AfterCreate; - WindowPosition := wpScreenCenter; - SetPosition(0, 0, 286, 66); - WindowTitle := 'New Form'; - - l1 := CreateLabel(self, 8, 8, 'Form name:'); - edName := CreateEdit(self, 8, 28, 180, 0); - edName.Text := 'frm'; - edName.OnKeyPress := @OnedNameKeyPressed; - btnOK := CreateButton(self, 196, 8, 80, rsOK, @OnButtonClick); - btnCancel := CreateButton(self, 196, 36, 80, rsCancel, @OnButtonClick); -end; - -procedure TNewFormForm.OnButtonClick(Sender: TObject); -begin - if Sender = btnOK then - ModalResult := 1 - else - ModalResult := 2; -end; - -{ TEditPositionForm } - -procedure TEditPositionForm.edPosKeyPressed(Sender: TObject; var KeyCode: word; - var ShiftState: TShiftState; var Consumed: boolean); -begin - if (KeyCode = keyEnter) or (KeyCode = keyPEnter) then - btnOK.Click; -end; - -procedure TEditPositionForm.AfterCreate; -begin - inherited AfterCreate; - WindowPosition := wpScreenCenter; - Width := 186; - Height := 66; - WindowTitle := 'Position'; - Sizeable := False; - - lbPos := CreateLabel(self, 8, 8, 'Pos: '); - edPos := CreateEdit(self, 8, 28, 80, 0); - edPos.OnKeyPress := @edPosKeyPressed; - btnOK := CreateButton(self, 98, 8, 80, rsOK, @OnButtonClick); - btnCancel := CreateButton(self, 98, 36, 80, rsCancel, @OnButtonClick); -end; - -procedure TEditPositionForm.OnButtonClick(Sender: TObject); -begin - if Sender = btnOK then - ModalResult := 1 - else - ModalResult := 2; -end; - -{ TWidgetOrderForm } - -constructor TWidgetOrderForm.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - Name := 'WidgetOrderForm'; - gINI.ReadFormState(self); -end; - -destructor TWidgetOrderForm.Destroy; -begin - gINI.WriteFormState(self); - inherited Destroy; -end; - -procedure TWidgetOrderForm.AfterCreate; -begin - inherited AfterCreate; - {@VFD_BODY_BEGIN: WidgetOrderForm} - Name := 'WidgetOrderForm'; - SetPosition(534, 173, 312, 258); - WindowTitle := 'Widget order'; - WindowPosition := wpScreenCenter; - - l1 := TfpgLabel.Create(self); - with l1 do - begin - Name := 'l1'; - SetPosition(4, 4, 108, 16); - FontDesc := '#Label1'; - Text := 'Form widget order:'; - end; - - list := TfpgListBox.Create(self); - with list do - begin - Name := 'list'; - SetPosition(4, 24, 220, 228); - Anchors := [anLeft,anRight,anTop,anBottom]; - FontDesc := '#List'; - TabOrder := 1; - end; - - btnOK := TfpgButton.Create(self); - with btnOK do - begin - Name := 'btnOK'; - SetPosition(232, 24, 75, 24); - Anchors := [anRight,anTop]; - Text := 'OK'; - FontDesc := '#Label1'; - ImageName := 'stdimg.ok'; - TabOrder := 2; - OnClick := @OnButtonClick; - end; - - btnCancel := TfpgButton.Create(self); - with btnCancel do - begin - Name := 'btnCancel'; - SetPosition(232, 52, 75, 24); - Anchors := [anRight,anTop]; - Text := 'Cancel'; - FontDesc := '#Label1'; - ImageName := 'stdimg.cancel'; - TabOrder := 3; - OnClick := @OnButtonClick; - end; - - btnUp := TfpgButton.Create(self); - with btnUp do - begin - Name := 'btnUp'; - SetPosition(232, 108, 75, 24); - Anchors := [anRight,anTop]; - Text := 'Up'; - FontDesc := '#Label1'; - ImageName := ''; - TabOrder := 4; - OnClick := @OnButtonClick; - end; - - btnDown := TfpgButton.Create(self); - with btnDown do - begin - Name := 'btnDown'; - SetPosition(232, 136, 75, 24); - Anchors := [anRight,anTop]; - Text := 'Down'; - FontDesc := '#Label1'; - ImageName := ''; - TabOrder := 5; - OnClick := @OnButtonClick; - end; - - {@VFD_BODY_END: WidgetOrderForm} -end; - -procedure TWidgetOrderForm.OnButtonClick(Sender: TObject); -var - i: integer; - n: integer; - myilev: integer; - - function IdentLevel(astr: string): integer; - var - s: string; - f: integer; - begin - Result := 0; - s := astr; - f := 1; - while (f <= length(s)) and (s[f] = ' ') do - begin - Inc(Result); - Inc(f); - end; - end; - -begin - if Sender = btnOK then - ModalResult := 1 - else if Sender = btnCancel then - ModalResult := 2 - else - begin - // up / down - i := list.FocusItem; - if i < 0 then - Exit; - - myilev := IdentLevel(list.Items[i]); - - if Sender = btnUP then - begin - if (i > 0) and (IdentLevel(list.Items[i - 1]) = myilev) then - begin - list.Items.Move(i, i - 1); - - n := i; - while (n < list.Items.Count) and (IdentLevel(list.Items[n]) > myilev) do - begin - list.Items.Move(n, n - 1); - Inc(n); - end; - - list.FocusItem := i - 1; - end; - end - else if Sender = btnDOWN then - if (i < list.Items.Count-1) then - begin - n := i; - while (n < list.Items.Count) and (IdentLevel(list.Items[n]) > myilev) do - Inc(n); - - if (i = n) and (i < list.Items.Count-1) and (IdentLevel(list.Items[i]) > myilev) then - Exit; - - if (n > list.Items.Count-1) then - Exit; //==> - - while (n >= i) do - begin - list.Items.Move(n, n + 1); - Dec(n); - end; - - list.FocusItem := i + 1; - end; - end; -end; - -{ TVFDDialogBase } - -procedure TVFDDialog.HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); -begin - if keycode = keyEscape then - begin - ModalResult := 2; - consumed := True; - end; - inherited HandleKeyPress(keycode, shiftstate, consumed); -end; - -procedure TfrmVFDSetup.LoadSettings; -begin - chlGrid.FocusItem := gINI.ReadInteger('Options', 'GridResolution', 2); - tbMRUFileCount.Position := gINI.ReadInteger('Options', 'MRUFileCount', 4); - cbFullPath.Checked := gINI.ReadBool('Options', 'ShowFullPath', True); - eDefaultExt.Text := gINI.ReadString('Options', 'DefaultFileExt', '.pas'); - cbUndoOnExit.Checked := gINI.ReadBool('Options', 'UndoOnExit', UndoOnPropExit); -end; - -procedure TfrmVFDSetup.SaveSettings; -begin - gINI.WriteInteger('Options', 'GridResolution', chlGrid.FocusItem); - gINI.WriteInteger('Options', 'MRUFileCount', tbMRUFileCount.Position); - gINI.WriteBool('Options', 'ShowFullPath', cbFullPath.Checked); - gINI.WriteString('Options', 'DefaultFileExt', eDefaultExt.Text); - gINI.WriteBool('Options', 'UndoOnExit', cbUndoOnExit.Checked); -end; - -procedure TfrmVFDSetup.btnOKClick(Sender: TObject); -begin - SaveSettings; - ModalResult := 1; -end; - -procedure TfrmVFDSetup.AfterCreate; -begin - {@VFD_BODY_BEGIN: frmVFDSetup} - Name := 'frmVFDSetup'; - SetPosition(394, 399, 253, 225); - WindowTitle := 'General settings'; - WindowPosition := wpScreenCenter; - gINI.ReadFormState(self); - - lb1 := TfpgLabel.Create(self); - with lb1 do - begin - Name := 'lb1'; - SetPosition(28, 28, 116, 16); - FontDesc := '#Label1'; - Text := 'Grid resolution:'; - end; - - chlGrid := TfpgComboBox.Create(self); - with chlGrid do - begin - Name := 'chlGrid'; - SetPosition(140, 24, 88, 22); - FontDesc := '#List'; - Items.Add('1'); - Items.Add('4'); - Items.Add('8'); - TabOrder := 1; - FocusItem := 0; - end; - - btnOK := TfpgButton.Create(self); - with btnOK do - begin - Name := 'btnOK'; - SetPosition(93, 195, 75, 24); - Anchors := [anRight,anBottom]; - Text := 'OK'; - FontDesc := '#Label1'; - ImageName := 'stdimg.ok'; - TabOrder := 6; - OnClick := @btnOKClick; - end; - - btnCancel := TfpgButton.Create(self); - with btnCancel do - begin - Name := 'btnCancel'; - SetPosition(172, 195, 75, 24); - Anchors := [anRight,anBottom]; - Text := 'Cancel'; - FontDesc := '#Label1'; - ImageName := 'stdimg.cancel'; - ModalResult := -1; - TabOrder := 7; - end; - - lblRecentFiles := TfpgLabel.Create(self); - with lblRecentFiles do - begin - Name := 'lblRecentFiles'; - SetPosition(28, 92, 124, 16); - FontDesc := '#Label1'; - Text := 'Recent files count:'; - end; - - tbMRUFileCount := TfpgTrackBar.Create(self); - with tbMRUFileCount do - begin - Name := 'tbMRUFileCount'; - SetPosition(156, 84, 76, 30); - Max := 10; - Min := 2; - Position := 4; - ShowPosition := True; - TabOrder := 3; - end; - - cbFullPath := TfpgCheckBox.Create(self); - with cbFullPath do - begin - Name := 'cbFullPath'; - SetPosition(24, 112, 204, 20); - FontDesc := '#Label1'; - TabOrder := 4; - Text := 'Show the full file path'; - end; - - lblName1 := TfpgLabel.Create(self); - with lblName1 do - begin - Name := 'lblName1'; - SetPosition(8, 8, 176, 16); - FontDesc := '#Label2'; - Text := 'Form designer'; - end; - - lblName2 := TfpgLabel.Create(self); - with lblName2 do - begin - Name := 'lblName2'; - SetPosition(8, 72, 232, 16); - FontDesc := '#Label2'; - Text := 'Open Recent menu settings'; - end; - - eDefaultExt := TfpgEdit.Create(self); - with eDefaultExt do - begin - Name := 'eDefaultExt'; - SetPosition(28, 160, 68, 22); - TabOrder := 5; - Text := ''; - FontDesc := '#Edit1'; - end; - - lblName3 := TfpgLabel.Create(self); - with lblName3 do - begin - Name := 'lblName3'; - SetPosition(12, 140, 152, 16); - FontDesc := '#Label2'; - Text := 'Default file extension'; - end; - - cbUndoOnExit := TfpgCheckBox.Create(self); - with cbUndoOnExit do - begin - Name := 'cbUndoOnExit'; - SetPosition(24, 48, 204, 18); - FontDesc := '#Label1'; - TabOrder := 2; - Text := 'Undo on property editor exit'; - end; - - {@VFD_BODY_END: frmVFDSetup} - - LoadSettings; -end; - -procedure TfrmVFDSetup.BeforeDestruction; -begin - gINI.WriteFormState(self); - inherited BeforeDestruction; -end; - - -end. - diff --git a/examples/apps/uidesigner/vfdmain.pas b/examples/apps/uidesigner/vfdmain.pas deleted file mode 100644 index b11a5f02..00000000 --- a/examples/apps/uidesigner/vfdmain.pas +++ /dev/null @@ -1,445 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - Main window functionality and designer class. -} - -unit vfdmain; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, - SysUtils, - gfx_widget, - gui_dialogs, - vfdprops, - vfdforms, - vfddesigner, - vfdfile, - newformdesigner; - -const - program_version = '0.7 beta'; - -type - - TMainDesigner = class(TObject) - private - procedure SetEditedFileName(const Value: string); - procedure LoadDefaults; - protected - FDesigners: TList; - FFile: TVFDFile; - FEditedFileName: string; - public - GridResolution: integer; - SaveComponentNames: boolean; - selectedform: TFormDesigner; - constructor Create; - destructor Destroy; override; - procedure CreateWindows; - procedure SelectForm(aform: TFormDesigner); - function Designer(index: integer): TFormDesigner; - function DesignerCount: integer; - function NewFormName: string; - procedure CreateParseForm(const FormName, FormHead, FormBody: string); - procedure OnNewForm(Sender: TObject); - procedure OnNewFile(Sender: TObject); - procedure OnSaveFile(Sender: TObject); - procedure OnLoadFile(Sender: TObject); - procedure OnPropTextChange(Sender: TObject); - procedure OnPropNameChange(Sender: TObject); - procedure OnPropPosEdit(Sender: TObject); - procedure OnOtherChange(Sender: TObject); - procedure OnAnchorChange(Sender: TObject); - procedure OnEditWidget(Sender: TObject); - procedure OnEditWidgetOrder(Sender: TObject); - procedure OnEditTabOrder(Sender: TObject); - procedure OnExit(Sender: TObject); - procedure OnOptionsClick(Sender: TObject); - property EditedFileName: string read FEditedFileName write SetEditedFileName; - end; - - -var - maindsgn: TMainDesigner; - - -implementation - -uses - vfdformparser, - gui_iniutils, - gfx_utils; - -Var - DefaultPasExt : String = '.pas'; - -{ TMainDesigner } - -procedure TMainDesigner.OnNewFile(Sender: TObject); -var - n: integer; -begin - EditedFileName := ''; - for n := 0 to FDesigners.Count - 1 do - begin - selectedform := nil; - TFormDesigner(FDesigners[n]).Free; - end; - FDesigners.Clear; - OnNewForm(Sender); -end; - - -procedure TMainDesigner.OnLoadFile(Sender: TObject); -var - n, m: integer; - bl, bl2: TVFDFileBlock; - fname: string; - afiledialog: TfpgFileDialog; -begin - fname := EditedFileName; - - if Sender <> maindsgn then - begin - afiledialog := TfpgFileDialog.Create(nil); - afiledialog.Filename := EditedFilename; - afiledialog.WindowTitle := 'Open form file'; - afiledialog.Filter := 'Pascal source files (*.pp;*.pas;*.inc;*.dpr;*.lpr)|*.pp;*.pas;*.inc;*.dpr;*.lpr|All Files (*)|*'; - if afiledialog.RunOpenFile then - begin - EditedFileName := aFileDialog.Filename; - fname := EditedFilename; - end - else - fname := ''; - FreeAndNil(aFileDialog); - end; - - if fname = '' then - Exit; - - for n := 0 to FDesigners.Count - 1 do - begin - selectedform := nil; - TFormDesigner(FDesigners[n]).Free; - end; - FDesigners.Clear; - - if not fpgFileExists(fname) then - begin - ShowMessage('File does not exists.', 'Error loading form'); - Exit; - end; - - FFile.LoadFile(fname); - FFile.GetBlocks; - - for n := 0 to FFile.BlockCount-1 do - begin - bl := FFile.Block(n); - if bl.BlockID = 'VFD_HEAD_BEGIN' then - for m := n + 1 to FFile.BlockCount-1 do - begin - bl2 := FFile.Block(m); - if (bl2.BlockID = 'VFD_BODY_BEGIN') and (bl2.FormName = bl.FormName) then - CreateParseForm(bl.FormName, bl.Data, bl2.Data); // pair was found - end; - end; - - frmMain.mru.AddItem(fname); -end; - -procedure TMainDesigner.OnSaveFile(Sender: TObject); -var - n, i: integer; - fd: TFormDesigner; - fdata: string; - ff: file; - fname, uname: string; - aFileDialog: TfpgFileDialog; -begin - fname := EditedFileName; - - if ((Sender as TComponent).Name = 'btnSave') - and (EditedFileName <> '') then - fname := EditedFileName - else - begin - afiledialog := TfpgFileDialog.Create(nil); - afiledialog.Filename := EditedFilename; - afiledialog.WindowTitle := 'Save form source'; - afiledialog.Filter := 'Pascal source files (*.pp;*.pas;*.inc;*.dpr;*.lpr)|*.pp;*.pas;*.inc;*.dpr;*.lpr|All Files (*)|*'; - if afiledialog.RunSaveFile then - begin - fname:=aFileDialog.Filename; - if (ExtractFileExt(fname)='') then - fname:=fname+DefaultPasExt; - EditedFileName := fname; - end - else - fname := ''; - aFileDialog.Free; - end; - - if fname = '' then - Exit; - - EditedFileName := fname; - - if fpgFileExists(fname) then - begin - FFile.LoadFile(fname); - FFile.GetBlocks; - end - else - begin - uname := ExtractFileName(fname); - i := pos('.pas', LowerCase(uname)); - if i > 0 then - uname := copy(uname, 1, i - 1); - FFile.NewFileSkeleton(uname); - end; - - for n := 0 to DesignerCount-1 do - begin - fd := Designer(n); - FFile.SetFormData(fd.Form.Name, fd.GetFormSourceDecl, fd.GetFormSourceImpl); - end; - - fdata := FFile.MergeBlocks; - - AssignFile(ff, fpgToOSEncoding(fname)); - try - Rewrite(ff, 1); - try - BlockWrite(ff, fdata[1], length(fdata)); - finally - CloseFile(ff); - end; - frmMain.mru.AddItem(fname); - except - on E: Exception do - raise Exception.Create('Form save I/O failure in TMainDesigner.OnSaveFile.' + #13 + - E.Message); - end; -end; - -procedure TMainDesigner.OnAnchorChange(Sender: TObject); -begin - if SelectedForm <> nil then - SelectedForm.OnAnchorChange(Sender); -end; - -procedure TMainDesigner.OnOtherChange(Sender: TObject); -begin - if SelectedForm <> nil then - SelectedForm.OnOtherChange(Sender); -end; - -procedure TMainDesigner.OnPropNameChange(Sender: TObject); -begin - if SelectedForm <> nil then - SelectedForm.OnPropNameChange(Sender); -end; - -procedure TMainDesigner.OnPropPosEdit(Sender: TObject); -begin - if SelectedForm <> nil then - SelectedForm.OnPropPosEdit(Sender); -end; - -procedure TMainDesigner.OnPropTextChange(Sender: TObject); -begin - if SelectedForm <> nil then - SelectedForm.OnPropTextChange(Sender); -end; - -procedure TMainDesigner.OnNewForm(Sender: TObject); -var - fd: TFormDesigner; - nfrm: TNewFormForm; -begin - nfrm := TNewFormForm.Create(nil); - if nfrm.ShowModal = 1 then - if nfrm.edName.Text <> '' then - begin - fd := TFormDesigner.Create; - fd.Form.Name := nfrm.edName.Text; - fd.Form.WindowTitle := nfrm.edName.Text; - FDesigners.Add(fd); - fd.Show; - end; - nfrm.Free; -end; - -procedure TMainDesigner.CreateWindows; -begin - frmMain := TfrmMain.Create(nil); - frmMain.WindowTitle := 'fpGUI Designer v' + program_version; - frmMain.Show; - - frmProperties := TfrmProperties.Create(nil); - frmProperties.Show; -end; - -constructor TMainDesigner.Create; -begin - FDesigners := TList.Create; - SelectedForm := nil; - FFile := TVFDFile.Create; - - // options - SaveComponentNames := True; - LoadDefaults; - - FEditedFileName := ''; -end; - -destructor TMainDesigner.Destroy; -var - n: integer; -begin - for n := 0 to FDesigners.Count - 1 do - TFormDesigner(FDesigners[n]).Free; - FDesigners.Free; - FFile.Free; - - frmProperties.Free; - frmMain.Free; - inherited; -end; - -procedure TMainDesigner.SelectForm(aform: TFormDesigner); -begin - if (SelectedForm <> nil) and (SelectedForm <> aform) then - SelectedForm.DeSelectAll; - SelectedForm := aform; -end; - -function TMainDesigner.Designer(index: integer): TFormDesigner; -begin - Result := nil; - if (index < 0) or (index > FDesigners.Count-1) then - Exit; - Result := TFormDesigner(FDesigners[index]); -end; - -function TMainDesigner.DesignerCount: integer; -begin - Result := FDesigners.Count; -end; - -function TMainDesigner.NewFormName: string; -var - n, i: integer; - s: string; -begin - i := 0; - repeat - Inc(i); - s := 'Form' + IntToStr(i); - n := 0; - while (n < DesignerCount) do - begin - if Designer(n).Form.Name = s then - Break; - Inc(n); - end; - until n > DesignerCount-1; - Result := s; -end; - -procedure TMainDesigner.CreateParseForm(const FormName, FormHead, FormBody: string); -var - fd: TFormDesigner; - fp: TVFDFormParser; -begin - fp := TVFDFormParser.Create(FormName, FormHead, FormBody); - fd := fp.ParseForm; - fp.Free; - - FDesigners.Add(fd); - fd.Show; -end; - -procedure TMainDesigner.OnEditWidget(Sender: TObject); -begin - if SelectedForm <> nil then - SelectedForm.OnEditWidget(Sender); -end; - -procedure TMainDesigner.OnEditWidgetOrder(Sender: TObject); -begin - if SelectedForm <> nil then - SelectedForm.EditWidgetOrder; -end; - -procedure TMainDesigner.OnEditTabOrder(Sender: TObject); -begin - if SelectedForm <> nil then - SelectedForm.EditTabOrder; -end; - -procedure TMainDesigner.OnExit(Sender: TObject); -begin - frmProperties.Close; - frmMain.Close; -end; - -procedure TMainDesigner.OnOptionsClick(Sender: TObject); -var - frm: TfrmVFDSetup; -begin - frm := TfrmVFDSetup.Create(nil); - try - if frm.ShowModal = 1 then - begin - LoadDefaults; - frmMain.mru.MaxItems := gINI.ReadInteger('Options', 'MRUFileCount', 4); - frmMain.mru.ShowFullPath := gINI.ReadBool('Options', 'ShowFullPath', True); - end; - finally - frm.Free; - end; -end; - -procedure TMainDesigner.SetEditedFileName(const Value: string); -var - s: string; -begin - FEditedFileName := Value; - s := ExtractFileName(FEditedFileName); - if s = '' then - s := '[new]'; - frmMain.WindowTitle := 'fpGUI Designer v' + program_version + ' - ' + s; -end; - -procedure TMainDesigner.LoadDefaults; -begin - case gINI.ReadInteger('Options', 'GridResolution', 1) of - 0: GridResolution := 2; - 1: GridResolution := 4; - 2: GridResolution := 8; - end; - DefaultPasExt := gINI.ReadString('Options', 'DefaultFileExt', '.pas'); - UndoOnPropExit := gINI.ReadBool('Options', 'UndoOnExit', DefUndoOnPropExit); -end; - -end. - diff --git a/examples/apps/uidesigner/vfdpropeditgrid.pas b/examples/apps/uidesigner/vfdpropeditgrid.pas deleted file mode 100644 index 209b1d59..00000000 --- a/examples/apps/uidesigner/vfdpropeditgrid.pas +++ /dev/null @@ -1,541 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - Property editor for grid columns. -} - -unit vfdpropeditgrid; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, - SysUtils, - gfxbase, - gfx_widget, - gui_form, - gui_label, - gui_edit, - gui_button, - gui_listbox, - gui_memo, - gui_combobox, - gui_customgrid, - gui_basegrid, - gui_grid, - gui_checkbox, - vfdforms, - vfdwidgetclass, - vfdprops, - vfdformparser; - -type - - TPropertyDBColumns = class(TVFDWidgetProperty) - public - function ParseSourceLine(wg: TfpgWidget; const line: string): boolean; override; - function GetPropertySource(wg: TfpgWidget; const ident: string): string; override; - function GetValueText(wg: TfpgWidget): string; override; - function CreateEditor(AOwner: TComponent): TVFDPropertyEditor; override; - procedure OnExternalEdit(wg: TfpgWidget); override; - end; - - - // A normal grid's column information now become rows of data. - TColumnsGrid = class(TfpgCustomGrid) - protected - function GetRowCount: Integer; override; - procedure DrawCell(ARow, ACol: Integer; ARect: TfpgRect; AFlags: TfpgGridDrawState); override; - public - dbgrid: TfpgStringGrid; - constructor Create(AOwner: TComponent); override; - end; - - - TColumnEditForm = class(TfpgForm) - private - procedure GridRowChange(Sender: TObject; row: Integer); - procedure EditChange(Sender: TObject); - procedure NewButtonClick(Sender: TObject); - procedure DeleteButtonClick(Sender: TObject); - procedure CloseButtonClick(Sender: TObject); - procedure UpDownButtonClick(Sender: TObject); - procedure SaveColumn(row: integer); - public - {@VFD_HEAD_BEGIN: ColumnEditForm} - lbLabel1: TfpgLabel; - grid: TColumnsGrid; - lbLabel2: TfpgLabel; - lbLabel3: TfpgLabel; - lbLabel6: TfpgLabel; - lbLabel5: TfpgLabel; - lbCOLNO: TfpgLabel; - edTITLE: TfpgEdit; - edCOLWIDTH: TfpgEdit; - chlALIGN: TfpgComboBox; - btnNew: TfpgButton; - btnDelete: TfpgButton; - btnUP: TfpgButton; - btnDOWN: TfpgButton; - btnClose: TfpgButton; - {@VFD_HEAD_END: ColumnEditForm} - - dbgrid: TfpgStringGrid; - procedure AfterCreate; override; - end; - - -implementation - - -procedure EditStringGridColumns(agrid: TfpgStringGrid); -var - frm: TColumnEditForm; -begin - frm := TColumnEditForm.Create(nil); - frm.dbgrid := agrid; - frm.grid.dbgrid := agrid; - frm.ShowModal; - frm.Free; -end; - -{ TColumnEditForm } - -procedure TColumnEditForm.AfterCreate; -begin - {@VFD_BODY_BEGIN: ColumnEditForm} - Name := 'ColumnEditForm'; - SetPosition(270, 267, 511, 269); - WindowTitle := 'Column editor'; - Sizeable := False; - - lbLabel1 := TfpgLabel.Create(self); - with lbLabel1 do - begin - Name := 'lbLabel1'; - SetPosition(8, 4, 110, 16); - Text := 'String Grid columns:'; - FontDesc := '#Label1'; - AutoSize := True; - end; - - grid := TColumnsGrid.Create(self); - with grid do - begin - Name := 'grid'; - SetPosition(8, 24, 328, 204); - OnRowChange := @GridRowChange; - end; - - lbLabel2 := TfpgLabel.Create(self); - with lbLabel2 do - begin - Name := 'lbLabel2'; - SetPosition(344, 24, 56, 16); - Text := 'Column:'; - FontDesc := '#Label1'; - AutoSize := True; - end; - - lbLabel3 := TfpgLabel.Create(self); - with lbLabel3 do - begin - Name := 'lbLabel3'; - SetPosition(344, 56, 34, 16); - Text := 'Title:'; - FontDesc := '#Label1'; - AutoSize := True; - end; - - lbLabel6 := TfpgLabel.Create(self); - with lbLabel6 do - begin - Name := 'lbLabel6'; - SetPosition(344, 100, 88, 16); - Text := 'Column width:'; - FontDesc := '#Label1'; - AutoSize := True; - end; - - lbLabel5 := TfpgLabel.Create(self); - with lbLabel5 do - begin - Name := 'lbLabel5'; - SetPosition(344, 144, 83, 16); - Text := 'Alignment:'; - FontDesc := '#Label1'; - AutoSize := True; - end; - - lbCOLNO := TfpgLabel.Create(self); - with lbCOLNO do - begin - Name := 'lbCOLNO'; - SetPosition(404, 24, 54, 16); - Text := '--'; - FontDesc := '#Label1'; - AutoSize := True; - end; - - edTITLE := TfpgEdit.Create(self); - with edTITLE do - begin - Name := 'edTITLE'; - SetPosition(344, 72, 160, 22); - Text := ''; - FontDesc := '#Edit1'; - OnChange := @EditChange; - end; - - edCOLWIDTH := TfpgEdit.Create(self); - with edCOLWIDTH do - begin - Name := 'edCOLWIDTH'; - SetPosition(344, 116, 160, 22); - Text := ''; - FontDesc := '#Edit1'; - OnChange := @EditChange; - end; - - chlALIGN := TfpgComboBox.Create(self); - with chlALIGN do - begin - Name := 'chlALIGN'; - SetPosition(344, 162, 160, 22); - Items.Add('Left'); - Items.Add('Right'); - Items.Add('Center'); - FontDesc := '#List'; - OnChange := @EditChange; - end; - - btnNew := TfpgButton.Create(self); - with btnNew do - begin - Name := 'btnNew'; - SetPosition(8, 236, 75, 24); - Text := 'New'; - FontDesc := '#Label1'; - ImageName := ''; - ModalResult := 0; - OnClick := @NewButtonClick; - end; - - btnDelete := TfpgButton.Create(self); - with btnDelete do - begin - Name := 'btnDelete'; - SetPosition(86, 236, 75, 24); - Text := 'Delete'; - FontDesc := '#Label1'; - ImageName := ''; - ModalResult := 0; - OnClick := @DeleteButtonClick; - end; - - btnUP := TfpgButton.Create(self); - with btnUP do - begin - Name := 'btnUP'; - SetPosition(182, 236, 75, 24); - Text := 'UP'; - FontDesc := '#Label1'; - ImageName := ''; - ModalResult := 0; - OnClick := @UpDownButtonClick; - end; - - btnDOWN := TfpgButton.Create(self); - with btnDOWN do - begin - Name := 'btnDOWN'; - SetPosition(260, 236, 75, 24); - Text := 'DOWN'; - FontDesc := '#Label1'; - ImageName := ''; - ModalResult := 0; - OnClick := @UpDownButtonClick; - end; - - btnClose := TfpgButton.Create(self); - with btnClose do - begin - Name := 'btnClose'; - SetPosition(428, 236, 75, 24); - Text := 'Close'; - FontDesc := '#Label1'; - ImageName := 'stdimg.close'; - ModalResult := 0; - OnClick := @CloseButtonClick; - end; - - {@VFD_BODY_END: ColumnEditForm} -end; - -procedure TColumnEditForm.GridRowChange(Sender: TObject; row: Integer); -var - i: integer; - c: TfpgStringColumn; -begin - c := dbgrid.Columns[row]; - if c = nil then - Exit; - - try - // disable event handlers - edTITLE.OnChange := nil; - edCOLWIDTH.OnChange := nil; - chlALIGN.OnChange := nil; - - lbCOLNO.Text := IntToStr(row); - edTITLE.Text := c.Title; - edCOLWIDTH.Text := IntToStr(c.Width); - case c.Alignment of - taRightJustify: - i := 1; - taCenter: - i := 2 - else - i := 0; - end; - chlALIGN.FocusItem := i; - finally - // enable event handlers again. - edTITLE.OnChange := @EditChange; - edCOLWIDTH.OnChange := @EditChange; - chlALIGN.OnChange := @EditChange; - end; -end; - -procedure TColumnEditForm.SaveColumn(row: integer); -var - c: TfpgStringColumn; -begin - c := dbgrid.Columns[row]; - if c = nil then - Exit; - - c.Title := edTITLE.Text; - c.Width := StrToIntDef(edCOLWIDTH.Text, 30); - case chlALIGN.FocusItem of - 1: c.Alignment := taRightJustify; - 2: c.Alignment := taCenter; - else - c.Alignment := taLeftJustify; - end; - - grid.RePaint; - dbgrid.Update; -end; - -procedure TColumnEditForm.EditChange(Sender: TObject); -begin - if grid.FocusRow < 0 then - Exit; - SaveColumn(grid.FocusRow) -end; - -procedure TColumnEditForm.NewButtonClick(Sender: TObject); -begin - dbgrid.AddColumn('New', 50, taLeftJustify); - grid.FocusRow := grid.RowCount; - grid.Update; - GridRowChange(Sender, grid.FocusRow); -end; - -procedure TColumnEditForm.DeleteButtonClick(Sender: TObject); -begin - dbgrid.DeleteColumn(grid.FocusRow); - grid.Update; -end; - -procedure TColumnEditForm.CloseButtonClick(Sender: TObject); -begin - Close; -end; - -procedure TColumnEditForm.UpDownButtonClick(Sender: TObject); -begin - if Sender = btnUP then - begin - if grid.FocusRow > 0 then - begin - dbgrid.MoveColumn(grid.FocusRow - 1, grid.FocusRow - 2); - grid.FocusRow := grid.FocusRow - 1; - grid.Update; - end; - end - else if grid.FocusRow < grid.RowCount-1 then - begin - dbgrid.MoveColumn(grid.FocusRow - 1, grid.FocusRow); - grid.FocusRow := grid.FocusRow + 1; - grid.Update; - end; -end; - - -{ TColumnsGrid } - -function TColumnsGrid.GetRowCount: Integer; -begin - try - // Yes, it must be ColumnCount and *not* RowCount! - Result := dbgrid.ColumnCount; - except - Result := inherited GetColumnCount; - end; -end; - -procedure TColumnsGrid.DrawCell(ARow, ACol: Integer; ARect: TfpgRect; AFlags: TfpgGridDrawState); -var - s: string; - x: integer; - c: TfpgStringColumn; -begin -// writeln('ARow=', ARow, ' ACol=', ACol); - c := dbgrid.Columns[ARow{ - 1}]; - if c = nil then - begin -// writeln(' TColumnsGrid.DrawCell -> exit early because c = nil'); - Exit; - end; -// writeln(' ... we passed the nil test'); - x := ARect.Left + 1; - - case ACol of - 0: s := IntToStr(ARow); - 1: s := c.Title; - 2: s := IntToStr(c.Width); - 3: case c.Alignment of - taRightJustify: - s := 'Right'; - taCenter: - s := 'Center'; - else - s := 'Left'; - end; - else - s := '?'; - end; - - Canvas.DrawString(x, ARect.Top + 1, s); -end; - -constructor TColumnsGrid.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - RowSelect := True; - ColumnCount := 0; - RowCount := 0; - AddColumn('Col.', 30); - AddColumn('Title', 80); - AddColumn('Width', 40); - AddColumn('Align', 50); -end; - -{ TPropertyDBColumns } - -function TPropertyDBColumns.CreateEditor(AOwner: TComponent): TVFDPropertyEditor; -begin - Result := TExternalPropertyEditor.Create(AOwner, self); -end; - -function TPropertyDBColumns.GetValueText(wg: TfpgWidget): string; -begin - with TfpgStringGrid(wg) do - Result := '[' + IntToStr(ColumnCount) + ' columns]'; -end; - -procedure TPropertyDBColumns.OnExternalEdit(wg: TfpgWidget); -begin - if not Assigned(wg) then - raise Exception.Create('TPropertyDBColumns.OnExternalEdit(wg) - wg widget may not be nil.'); - if not (wg is TfpgStringGrid) then - raise Exception.Create('TPropertyDBColumns.OnExternalEdit(wg) - wg widget is not a TfpgStringGrid.'); - EditStringGridColumns(TfpgStringGrid(wg)); -end; - -function TPropertyDBColumns.ParseSourceLine(wg: TfpgWidget; const line: string): boolean; -var - c: TfpgStringColumn; - s: string; - sval: string; -begin - s := line; - Result := False; - if UpperCase(GetIdentifier(s)) <> UpperCase('ADDCOLUMN') then - Exit; - - c := TfpgStringColumn.Create; - - Result := CheckSymbol(s, '('); - - if Result then - c.Title := GetStringValue(s); - Result := Result and CheckSymbol(s, ','); - if Result then - c.Width := GetIntValue(s); - Result := Result and CheckSymbol(s, ','); - if Result then - begin - sval := UpperCase(GetIdentifier(s)); - if sval = 'TARIGHTJUSTIFY' then - c.Alignment := taRightJustify - else if sval = 'TACENTER' then - c.Alignment := taCenter - else - c.Alignment := taLeftJustify; - end; - - Result := Result and CheckSymbol(s, ')'); - Result := Result and CheckSymbol(s, ';'); - - if Result then - TfpgStringGrid(wg).AddColumn(c.Title, c.Width, c.Alignment); - - c.Free; -end; - -function TPropertyDBColumns.GetPropertySource(wg: TfpgWidget; const ident: string): string; -var - f: integer; - c: TfpgStringColumn; - alstr: string; -begin - Result := ''; - with TfpgStringGrid(wg) do - begin - for f := 0 to ColumnCount-1 do - begin - c := Columns[f]; - case c.Alignment of - taRightJustify: - alstr := 'taRightJustify'; - taCenter: - alstr := 'taCenter'; - else - alstr := 'taLeftJustify'; - end; - Result := Result + ident - + 'AddColumn(' + QuotedStr(c.Title) + ', ' - + IntToStr(c.Width) + ', ' - + alstr + ');' + LineEnding; - end; { for } - end; { with } -end; - -end. - diff --git a/examples/apps/uidesigner/vfdprops.pas b/examples/apps/uidesigner/vfdprops.pas deleted file mode 100644 index a46b73c5..00000000 --- a/examples/apps/uidesigner/vfdprops.pas +++ /dev/null @@ -1,696 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - Property editors. -} - -unit vfdprops; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, - SysUtils, - gfxbase, - gfx_widget, - vfdwidgetclass, - gui_edit, - gui_button, - gui_combobox; - -type - - TPropertyString = class(TVFDWidgetProperty) - public - function ParseSourceLine(wg: TfpgWidget; const line: string): boolean; override; - function GetPropertySource(wg: TfpgWidget; const ident: string): string; override; - function GetValueText(wg: TfpgWidget): string; override; - function CreateEditor(AOwner: TComponent): TVFDPropertyEditor; override; - end; - - - TPropertyInteger = class(TVFDWidgetProperty) - public - function ParseSourceLine(wg: TfpgWidget; const line: string): boolean; override; - function GetPropertySource(wg: TfpgWidget; const ident: string): string; override; - function GetValueText(wg: TfpgWidget): string; override; - function CreateEditor(AOwner: TComponent): TVFDPropertyEditor; override; - end; - - - TPropertyEnum = class(TVFDWidgetProperty) - public - function ParseSourceLine(wg: TfpgWidget; const line: string): boolean; override; - function GetPropertySource(wg: TfpgWidget; const ident: string): string; override; - function GetValueText(wg: TfpgWidget): string; override; - function CreateEditor(AOwner: TComponent): TVFDPropertyEditor; override; - end; - - - TPropertyStringList = class(TVFDWidgetProperty) - public - function ParseSourceLine(wg: TfpgWidget; const line: string): boolean; override; - function GetPropertySource(wg: TfpgWidget; const ident: string): string; override; - function GetValueText(wg: TfpgWidget): string; override; - function CreateEditor(AOwner: TComponent): TVFDPropertyEditor; override; - procedure OnExternalEdit(wg: TfpgWidget); override; - end; - - - TPropertyBoolean = class(TVFDWidgetProperty) - public - function ParseSourceLine(wg: TfpgWidget; const line: string): boolean; override; - function GetPropertySource(wg: TfpgWidget; const ident: string): string; override; - function GetValueText(wg: TfpgWidget): string; override; - function CreateEditor(AOwner: TComponent): TVFDPropertyEditor; override; - end; - - - TPropertyFontDesc = class(TPropertyString) - function CreateEditor(AOwner: TComponent): TVFDPropertyEditor; override; - procedure OnExternalEdit(wg: TfpgWidget); override; - end; - - - TGPEType = (gptInteger, gptString); - - - TGeneralPropertyEditor = class(TVFDPropertyEditor) - private - FOrigValue: string; - procedure EditExit(Sender: TObject); - procedure EditKeyPressed(Sender: TObject; var KeyCode: word; - var ShiftState: TShiftState; var Consumed: boolean); - public - etype: TGPEType; - edit: TfpgEdit; - procedure CreateLayout; override; - procedure LoadValue(wg: TfpgWidget); override; - procedure StoreValue(wg: TfpgWidget); override; - procedure LoadIntValue(wg: TfpgWidget); - procedure StoreIntValue(wg: TfpgWidget); - procedure LoadStrValue(wg: TfpgWidget); - procedure StoreStrValue(wg: TfpgWidget); - end; - - - TChoicePropertyEditor = class(TVFDPropertyEditor) - public - chl: TfpgComboBox; - procedure CreateLayout; override; - procedure LoadValue(wg: TfpgWidget); override; - procedure StoreValue(wg: TfpgWidget); override; - end; - - - TBooleanPropertyEditor = class(TChoicePropertyEditor) - public - procedure LoadValue(wg: TfpgWidget); override; - procedure StoreValue(wg: TfpgWidget); override; - end; - - - TExternalPropertyEditor = class(TVFDPropertyEditor) - protected - procedure HandlePaint; override; - public - btnEdit: TfpgButton; - Widget: TfpgWidget; - procedure CreateLayout; override; - procedure LoadValue(wg: TfpgWidget); override; - procedure StoreValue(wg: TfpgWidget); override; - procedure OnEditClick(Sender: TObject); - end; - - -procedure EditStringList(sl: TStringList); -procedure GetEnumPropValueList(wg: TObject; const APropName: string; sl: TStringList); - -const - DefUndoOnPropExit = False; - -var - UndoOnPropExit: Boolean = DefUndoOnPropExit; - -implementation - -uses - TypInfo, - vfdformparser, - vfdeditors, - fpgfx, - gui_dialogs; - - -procedure EditStringList(sl: TStringList); -var - frm: TItemEditorForm; -begin - frm := TItemEditorForm.Create(nil); - try - frm.edItems.Lines.Assign(sl); - if frm.ShowModal = 1 then - sl.Assign(frm.edItems.Lines); - finally - frm.Free; - end; -end; - -procedure GetEnumPropValueList(wg: TObject; const APropName: string; sl: TStringList); -var - lPropInfo: PPropInfo; - s: string; - lTypeData: PTypeData; - n: integer; -begin - lPropInfo := GetPropInfo(wg, APropName); - lTypeData := GetTypeData(lPropInfo^.PropType); - - sl.BeginUpdate; - try - sl.Clear; - for n := lTypeData^.MinValue to lTypeData^.MaxValue do - begin - s := GetEnumName(lPropInfo^.PropType, n); - sl.Add(s); - end; - finally - sl.EndUpdate; - end; -end; - -{ TPropertyString } - -function TPropertyString.CreateEditor(AOwner: TComponent): TVFDPropertyEditor; -begin - Result := TGeneralPropertyEditor.Create(AOwner, self); - with TGeneralPropertyEditor(Result) do - etype := gptString; -end; - -function TPropertyString.GetPropertySource(wg: TfpgWidget; const ident: string): string; -begin - Result := ident + Name + ' := ' + QuotedStr(GetStrProp(wg, Name)) + ';' + LineEnding; -end; - -function TPropertyString.GetValueText(wg: TfpgWidget): string; -begin - Result := GetStrProp(wg, Name); -end; - -function TPropertyString.ParseSourceLine(wg: TfpgWidget; const line: string): boolean; -var - s, sval: string; -begin - s := line; - Result := False; - if UpperCase(GetIdentifier(s)) <> UpperCase(Name) then - Exit; - - Result := CheckSymbol(s, ':='); - if Result then - begin - sval := GetStringValue(s); - Result := CheckSymbol(s, ';'); - end; - - if Result then - SetStrProp(wg, Name, sval); -end; - - -{ TPropertyInteger } - -function TPropertyInteger.CreateEditor(AOwner: TComponent): TVFDPropertyEditor; -begin - Result := TGeneralPropertyEditor.Create(AOwner, self); - with TGeneralPropertyEditor(Result) do - etype := gptInteger; -end; - -function TPropertyInteger.GetPropertySource(wg: TfpgWidget; const ident: string): string; -var - PropInfo: PPropInfo; -begin - PropInfo := GetPropInfo(wg.ClassType, Name); - if PropInfo^.Default <> GetOrdProp(wg, Name) then - Result := ident + Name + ' := ' + IntToStr(GetOrdProp(wg, Name)) + ';' + LineEnding - else - Result := ''; -end; - -function TPropertyInteger.GetValueText(wg: TfpgWidget): string; -begin - Result := IntToStr(GetOrdProp(wg, Name)); -end; - -function TPropertyInteger.ParseSourceLine(wg: TfpgWidget; const line: string): boolean; -var - s: string; - ival: integer; -begin - s := line; - Result := False; - if UpperCase(GetIdentifier(s)) <> UpperCase(Name) then - Exit; - - Result := CheckSymbol(s, ':='); - if Result then - begin - ival := GetIntValue(s); - Result := CheckSymbol(s, ';'); - end - else - ival := 0; - - if Result then - SetOrdProp(wg, Name, ival); -end; - -{ TGeneralPropertyEditor } - -procedure TGeneralPropertyEditor.EditExit(Sender: TObject); -begin - if FOrigValue <> edit.Text then - if UndoOnPropExit then - edit.Text := FOrigvalue - else - begin - UpdateProperty(nil); - FOrigValue := edit.Text; - end; -end; - -procedure TGeneralPropertyEditor.EditKeyPressed(Sender: TObject; - var KeyCode: word; var ShiftState: TShiftState; var Consumed: boolean); -begin - if (KeyCode = keyReturn) or (KeyCode = keyPEnter) then - begin - UpdateProperty(nil); - FOrigValue := edit.Text; - end - else if (keycode=keyEscape) then - begin - edit.Text := FOrigValue; - end - else - inherited; -end; - -procedure TGeneralPropertyEditor.CreateLayout; -begin - Anchors := [anTop, anLeft, anRight]; - Edit := TfpgEdit.Create(self); - Edit.SetPosition(0, 0, Width, Height); - Edit.Anchors := Anchors; -// Edit.OnChange := @UpdateProperty; - Edit.OnKeyPress := @EditKeyPressed; - Edit.OnExit :=@EditExit; - Edit.Visible := True; -end; - -procedure TGeneralPropertyEditor.LoadIntValue(wg: TfpgWidget); -begin - edit.Text := IntToStr(GetOrdProp(wg, prop.Name)); -end; - -procedure TGeneralPropertyEditor.LoadStrValue(wg: TfpgWidget); -var - s: string; -begin - s := GetStrProp(wg, prop.Name); - if etype = gptString then - edit.Text := s; -end; - -procedure TGeneralPropertyEditor.LoadValue(wg: TfpgWidget); -begin - case etype of - gptInteger: - LoadIntValue(wg); - else - LoadStrValue(wg); - end; - FOrigValue := edit.Text; -end; - -procedure TGeneralPropertyEditor.StoreIntValue(wg: TfpgWidget); -var - i: integer; -begin - try - i := StrToInt(edit.Text); - SetOrdProp(wg, Prop.Name, i); - except - // error - end; -end; - -procedure TGeneralPropertyEditor.StoreStrValue(wg: TfpgWidget); -var - s: string; -begin - if etype = gptString then - s := edit.Text; - SetStrProp(wg, prop.Name, s); -end; - -procedure TGeneralPropertyEditor.StoreValue(wg: TfpgWidget); -begin - case etype of - gptInteger: StoreIntValue(wg); - else - StoreStrValue(wg); - end; -end; - -{ TPropertyStringList } - -function TPropertyStringList.CreateEditor(AOwner: TComponent): TVFDPropertyEditor; -begin - Result := TExternalPropertyEditor.Create(AOwner, self); -end; - -function TPropertyStringList.GetPropertySource(wg: TfpgWidget; const ident: string): string; -var - sl: TStringList; - f: integer; -begin - sl := TStringList(GetObjectProp(wg, Name, TStrings)); - if not Assigned(sl) then - raise Exception.Create('Failed to find TStrings type property.'); - - Result := ''; - - //if sl.Text <> '' then - //begin - //writeln('Text = <', sl.Text, '>'); - //writeln('StringList.Count = ', sl.Count); - for f := 0 to sl.Count - 1 do - Result := Result + ident + Name + '.Add(' + QuotedStr(sl.Strings[f]) + ');' + LineEnding; - //end; -end; - -function TPropertyStringList.GetValueText(wg: TfpgWidget): string; -var - sl: TStringList; -begin - sl := TStringList(GetObjectProp(wg, Name, TStrings)); - if not Assigned(sl) then - raise Exception.Create('Failed to find TStrings type property.'); - Result := '[' + IntToStr(sl.Count) + ' lines]'; -end; - -procedure TPropertyStringList.OnExternalEdit(wg: TfpgWidget); -var - sl: TStringList; -begin - sl := TStringList(GetObjectProp(wg, Name, TStrings)); - if not Assigned(sl) then - raise Exception.Create('Failed to find TStrings type property.'); - EditStringList(sl); -end; - -function TPropertyStringList.ParseSourceLine(wg: TfpgWidget; const line: string): boolean; -var - s: string; - sval: string; - sl: TStringList; -begin - s := line; - Result := False; - if UpperCase(GetIdentifier(s)) <> UpperCase(Name) then - Exit; - - Result := CheckSymbol(s, '.'); - Result := Result and (UpperCase(GetIdentifier(s)) = 'ADD'); - Result := Result and CheckSymbol(s, '('); - if Result then - begin - sval := GetStringValue(s); - Result := Result and CheckSymbol(s, ')'); - Result := Result and CheckSymbol(s, ';'); - end; - - if Result then - begin - sl := TStringList(GetObjectProp(wg, Name, TStrings)); - if not Assigned(sl) then - raise Exception.Create('Failed to find TStrings type property.'); - sl.Add(sval); - end; -end; - -{ TPropertyBoolean } - - -function TPropertyBoolean.ParseSourceLine(wg: TfpgWidget; const line: string): boolean; -var - s: string; - bval: boolean; -begin - s := line; - Result := False; - if UpperCase(GetIdentifier(s)) <> UpperCase(Name) then - Exit; - - Result := CheckSymbol(s, ':='); - if Result then - begin - bval := GetBoolValue(s); - Result := CheckSymbol(s, ';'); - end - else - bval := False; - - if Result then - SetOrdProp(wg, Name, Ord(bval)); -end; - -function TPropertyBoolean.GetPropertySource(wg: TfpgWidget; const ident: string): string; -var - i: integer; - s: string; - PropInfo: PPropInfo; -begin - PropInfo := GetPropInfo(wg.ClassType, Name); - i := GetOrdProp(wg, Name); - if PropInfo^.Default <> i then - begin - if i = 1 then - s := 'True' - else - s := 'False'; - Result := ident + Name + ' := ' + s + ';' + LineEnding; - end - else - Result := ''; -end; - -function TPropertyBoolean.GetValueText(wg: TfpgWidget): string; -begin - if GetOrdProp(wg, Name) = 1 then - Result := 'True' - else - Result := 'False'; -end; - -function TPropertyBoolean.CreateEditor(AOwner: TComponent): TVFDPropertyEditor; -begin - Result := TBooleanPropertyEditor.Create(AOwner, self); -end; - -{ TExternalPropertyEditor } - -procedure TExternalPropertyEditor.HandlePaint; -var - r: TfpgRect; -begin -// inherited HandlePaint; -// if not Windowed then -// Exit; - if widget = nil then - Exit; - Canvas.Clear(clBoxColor); - Canvas.GetWinRect(r); - Canvas.SetTextColor(clText1); - prop.DrawValue(Widget, Canvas, r, 0); -end; - -procedure TExternalPropertyEditor.CreateLayout; -begin - inherited; - Widget := nil; - Anchors := [anTop, anLeft, anRight]; - - btnEdit := TfpgButton.Create(self); - with btnEdit do - begin - Height := self.Height; - Width := 24; - Top := 0; - Left := self.Width - btnEdit.Width; - Text := '...'; - UpdateWindowPosition; - Anchors := [anTop, anRight]; - OnClick := @OnEditClick; - Visible := True; - end; -end; - -procedure TExternalPropertyEditor.LoadValue(wg: TfpgWidget); -begin - Widget := wg; - RePaint; -end; - -procedure TExternalPropertyEditor.OnEditClick(Sender: TObject); -begin - if widget = nil then - Exit; - prop.OnExternalEdit(widget); - widget.Invalidate; - RePaint; -end; - -procedure TExternalPropertyEditor.StoreValue(wg: TfpgWidget); -begin - // nothing -end; - -{ TPropertyEnum } - -function TPropertyEnum.CreateEditor(AOwner: TComponent): TVFDPropertyEditor; -begin - Result := TChoicePropertyEditor.Create(AOwner, self); -end; - -function TPropertyEnum.GetValueText(wg: TfpgWidget): string; -begin - Result := GetEnumProp(wg, Name); -end; - -function TPropertyEnum.GetPropertySource(wg: TfpgWidget; const ident: string): string; -var - PropInfo: PPropInfo; -begin - PropInfo := GetPropInfo(wg.ClassType, Name); - if PropInfo^.Default <> GetOrdProp(wg, Name) then - Result := ident + Name + ' := ' + GetEnumProp(wg, Name) + ';' + LineEnding - else - Result := ''; -end; - -function TPropertyEnum.ParseSourceLine(wg: TfpgWidget; const line: string): boolean; -var - s, sval: string; -begin - s := line; - Result := False; - if UpperCase(GetIdentifier(s)) <> UpperCase(Name) then - Exit; - - Result := CheckSymbol(s, ':='); - if Result then - begin - sval := GetIdentifier(s); - Result := CheckSymbol(s, ';'); - end; - - if Result then - try - SetEnumProp(wg, Name, sval); - except - Writeln('invalid enum value: "' + sval + '" for ' + Name); - Result := False; - end; -end; - -{ TChoicePropertyEditor } - -procedure TChoicePropertyEditor.CreateLayout; -begin - Anchors := [anTop, anLeft, anRight]; - chl := TfpgComboBox.Create(self); - chl.SetPosition(0, 0, Width, Height); - chl.Anchors := Anchors; - chl.OnChange := @UpdateProperty; - chl.Visible := True; -end; - -procedure TChoicePropertyEditor.LoadValue(wg: TfpgWidget); -var - sv: string; - i, fi: integer; - sl: TStringList; -begin - sv := GetEnumProp(wg, prop.Name); - sl := TStringList.Create; - GetEnumPropValueList(wg, prop.Name, sl); - fi := 0; - for i := 0 to sl.Count - 1 do - begin - chl.Items.Add(sl.Strings[i]); - if UpperCase(sv) = UpperCase(sl.Strings[i]) then - fi := i; - end; - chl.FocusItem := fi; - sl.Free; -end; - -procedure TChoicePropertyEditor.StoreValue(wg: TfpgWidget); -begin - SetEnumProp(wg, prop.Name, chl.Text); -end; - -{ TBooleanPropertyEditor } - -procedure TBooleanPropertyEditor.LoadValue(wg: TfpgWidget); -var - b: integer; -begin - b := GetOrdProp(wg, prop.Name); - chl.Items.Add('True'); - chl.Items.Add('False'); - if b = 1 then - chl.FocusItem := 0 - else - chl.FocusItem := 1; -end; - -procedure TBooleanPropertyEditor.StoreValue(wg: TfpgWidget); -begin - SetOrdProp(wg, prop.Name, Ord(StrToBool(chl.Text))); -end; - -{ TPropertyFontDesc } - -function TPropertyFontDesc.CreateEditor(AOwner: TComponent): TVFDPropertyEditor; -begin - Result := TExternalPropertyEditor.Create(AOwner, self); -end; - -procedure TPropertyFontDesc.OnExternalEdit(wg: TfpgWidget); -var - s: string; -begin - s := GetStrProp(wg, Name); - if SelectFontDialog(s) then - SetStrProp(wg, Name, s); -end; - -end. - diff --git a/examples/apps/uidesigner/vfdresizer.pas b/examples/apps/uidesigner/vfdresizer.pas deleted file mode 100644 index 9944e3b6..00000000 --- a/examples/apps/uidesigner/vfdresizer.pas +++ /dev/null @@ -1,146 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - The resizer widget used in the form designer. -} - -unit vfdresizer; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, - SysUtils, - gfxbase, - gfx_widget; - -type - TwgResizer = class(TfpgWidget) - protected - wgdesigner: TObject; - procedure HandlePaint; override; - procedure HandleLMouseDown(x, y: integer; shiftstate: TShiftState); override; - procedure HandleLMouseUp(x, y: integer; shiftstate: TShiftState); override; - procedure HandleMouseMove(x, y: integer; btnstate: word; shiftstate: TShiftState); override; - public - direction: integer; - FDragging: boolean; - FDragPosX, - FDragPosY: TfpgCoord; - constructor Create(ACompDesigner: TObject; adirection: integer); reintroduce; - procedure Show; - end; - - -implementation - - -uses - vfddesigner, - vfdmain; - -{ TwgResizer } - -procedure TwgResizer.HandlePaint; -begin - Canvas.Clear(FBackgroundColor); -end; - -procedure TwgResizer.HandleLMouseDown(x, y: integer; shiftstate: TShiftState); -begin - inherited HandleLMouseDown(x, y, shiftstate); - FDragging := True; - FDragPosX := x; - FDragPosy := y; - {$IFDEF MSWINDOWS} - CaptureMouse; - {$ENDIF} -end; - -procedure TwgResizer.HandleLMouseUp(x, y: integer; shiftstate: TShiftState); -begin - inherited HandleLMouseUp(x, y, shiftstate); - FDragging := False; - {$IFDEF MSWINDOWS} - ReleaseMouse; - {$ENDIF} -end; - -procedure TwgResizer.HandleMouseMove(x, y: integer; btnstate: word; - shiftstate: TShiftState); -var - dx, - dy: integer; - gridc: integer; - wgd: TWidgetDesigner; -begin -// inherited HandleMouseMove(x, y, btnstate, shiftstate); - - if (not FDragging) or ((btnstate and MOUSE_LEFT) = 0) then - Exit; - - dx := x - FDragPosX; - dy := y - FDragPosY; - - wgd := TWidgetDesigner(wgdesigner); - gridc := maindsgn.GridResolution; - - dx := dx - dx mod gridc; - dy := dy - dy mod gridc; - - case direction of - 1: wgd.Widget.MoveAndResizeBy(dx, dy, -dx, -dy); - 2: wgd.Widget.MoveAndResizeBy(0, dy, 0, -dy); - 3: wgd.Widget.MoveAndResizeBy(0, dy, dx, -dy); - 4: wgd.Widget.MoveAndResizeBy(0, 0, dx, 0); - 5: wgd.Widget.MoveAndResizeBy(0, 0, dx, dy); - 6: wgd.Widget.MoveAndResizeBy(0, 0, 0, dy); - 7: wgd.Widget.MoveAndResizeBy(dx, 0, -dx, dy); - 8: wgd.Widget.MoveAndResizeBy(dx, 0, -dx, 0); - end; - wgd.UpdateResizerPositions; - wgd.FormDesigner.UpdatePropWin; -end; - -constructor TwgResizer.Create(ACompDesigner: TObject; adirection: integer); -begin - inherited Create(TWidgetDesigner(aCompDesigner).Widget.Parent); - FBackgroundColor := $404040; - wgdesigner := aCompDesigner; - FDragging := False; - Width := 5; - Height := 5; - direction := adirection; - case direction of - 1: MouseCursor := mcSizeSENW; // top left - 2: MouseCursor := mcSizeNS; // top - 3: MouseCursor := mcSizeSWNE; // top right - 4: MouseCursor := mcSizeEW; // right - 5: MouseCursor := mcSizeNWSE; // bottom right - 6: MouseCursor := mcSizeNS; // bottom - 7: MouseCursor := mcSizeNESW; // bottom left - 8: MouseCursor := mcSizeEW; // left - end; - Visible := True; -end; - -procedure TwgResizer.Show; -begin - HandleShow; -end; - -end. - diff --git a/examples/apps/uidesigner/vfdutils.pas b/examples/apps/uidesigner/vfdutils.pas deleted file mode 100644 index 90b99841..00000000 --- a/examples/apps/uidesigner/vfdutils.pas +++ /dev/null @@ -1,82 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - Some utility functions. -} - -unit vfdutils; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, - SysUtils, - gfx_widget, - gui_form, - gui_label, - gui_edit, - gui_button, - gui_memo, - gui_checkbox; - - -procedure SetWidgetText(wg: TfpgWidget; txt: string); -function GetWidgetText(wg: TfpgWidget; out txt: string): boolean; - - -implementation - -procedure SetWidgetText(wg: TfpgWidget; txt: string); -begin - if wg is TfpgForm then - TfpgForm(wg).WindowTitle := txt - else if wg is TfpgLabel then - TfpgLabel(wg).Text := txt - else if wg is TfpgEdit then - TfpgEdit(wg).Text := txt - else if wg is TfpgMemo then - TfpgMemo(wg).Text := txt - else if wg is TfpgButton then - TfpgButton(wg).Text := txt - else if wg is TfpgCheckBox then - TfpgCheckBox(wg).Text := txt; -end; - -function GetWidgetText(wg: TfpgWidget; out txt: string): boolean; -begin - Result := True; - if wg is TfpgForm then - txt := TfpgForm(wg).WindowTitle - else if wg is TfpgLabel then - txt := TfpgLabel(wg).Text - else if wg is TfpgEdit then - txt := TfpgEdit(wg).Text - else if wg is TfpgMemo then - txt := TfpgMemo(wg).Text - else if wg is TfpgButton then - txt := TfpgButton(wg).Text - else if wg is TfpgCheckBox then - txt := TfpgCheckBox(wg).Text - else - begin - Result := False; - txt := ''; - end; -end; - - -end. - diff --git a/examples/apps/uidesigner/vfdwidgetclass.pas b/examples/apps/uidesigner/vfdwidgetclass.pas deleted file mode 100644 index 9729691f..00000000 --- a/examples/apps/uidesigner/vfdwidgetclass.pas +++ /dev/null @@ -1,233 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - Main window functionality and designer class. -} - -unit vfdwidgetclass; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, - SysUtils, - gfxbase, - fpgfx, - gfx_widget; - -type - TWidgetClass = class of TfpgWidget; - - - TVFDWidgetProperty = class; - - - TVFDPropertyEditor = class(TfpgWidget) - private - FProp: TVFDWidgetProperty; - public - OnUpdate: TNotifyEvent; - procedure UpdateProperty(Sender: TObject); - property Prop: TVFDWidgetProperty read FProp; - constructor Create(AOwner: TComponent; aprop: TVFDWidgetProperty); reintroduce; - procedure CreateLayout; virtual; - procedure LoadValue(wg: TfpgWidget); virtual; - procedure StoreValue(wg: TfpgWidget); virtual; - end; - - - TVFDWidgetProperty = class(TObject) - public - Name: string; - Description: string; - public - constructor Create(aName: string); virtual; - function ParseSourceLine(wg: TfpgWidget; const line: string): boolean; virtual; - function GetPropertySource(wg: TfpgWidget; const ident: string): string; virtual; - function GetValueText(wg: TfpgWidget): string; virtual; - procedure DrawValue(wg: TfpgWidget; Canvas: TfpgCanvas; rect: TfpgRect; flags: integer); virtual; - function CreateEditor(AOwner: TComponent): TVFDPropertyEditor; virtual; - procedure OnExternalEdit(wg: TfpgWidget); virtual; - end; - - - TVFDPropertyClass = class of TVFDWidgetProperty; - - - TVFDWidgetClass = class(TObject) - private - FProps: TList; - public - WidgetClass: TWidgetClass; - Description: string; - WidgetIconName: string; - NameBase: string; - Container: boolean; - constructor Create(aClass: TWidgetClass); - destructor Destroy; override; - function AddProperty(apropname: string; apropclass: TVFDPropertyClass; desc: string): TVFDWidgetProperty; - function PropertyCount: integer; - function GetProperty(ind: integer): TVFDWidgetProperty; - function CreateWidget(AOwner: TComponent): TfpgWidget; - end; - - -implementation - -uses - TypInfo; - - -type - // used to get to SetDesigning() in Form Designer - TComponentFriendClass = class(TComponent); - - -{ TVFDWidgetClass } - -function TVFDWidgetClass.AddProperty(apropname: string; apropclass: TVFDPropertyClass; - desc: string): TVFDWidgetProperty; -begin - Result := apropclass.Create(apropname); - Result.Description := desc; - FProps.Add(Result); -end; - -constructor TVFDWidgetClass.Create(aClass: TWidgetClass); -begin - WidgetClass := aClass; - FProps := TList.Create; - Description := ''; - NameBase := 'Widget'; - Container := False; -end; - -function TVFDWidgetClass.CreateWidget(AOwner: TComponent): TfpgWidget; -begin - Result := WidgetClass.Create(AOwner); - TComponentFriendClass(Result).SetDesigning(True); -end; - -destructor TVFDWidgetClass.Destroy; -var - n: integer; -begin - for n := 0 to FProps.Count - 1 do - TVFDWidgetProperty(FProps[n]).Free; - FProps.Free; - inherited; -end; - -function TVFDWidgetClass.GetProperty(ind: integer): TVFDWidgetProperty; -begin - Result := TVFDWidgetProperty(FProps[ind]); -end; - -function TVFDWidgetClass.PropertyCount: integer; -begin - Result := FProps.Count; -end; - -{ TVFDWidgetProperty } - -constructor TVFDWidgetProperty.Create(aName: string); -begin - Name := aName; - Description := ''; -end; - -function TVFDWidgetProperty.GetPropertySource(wg: TfpgWidget; const ident: string): string; -begin - -end; - -function TVFDWidgetProperty.ParseSourceLine(wg: TfpgWidget; const line: string): boolean; -begin - Result := False; -end; - -function TVFDWidgetProperty.CreateEditor(AOwner: TComponent): TVFDPropertyEditor; -begin - Result := nil; -end; - -procedure TVFDWidgetProperty.DrawValue(wg: TfpgWidget; Canvas: TfpgCanvas; rect: TfpgRect; flags: integer); -var - x, y, fy: integer; - s: string; -begin - x := rect.left; - y := rect.top; - fy := y + rect.Height div 2 - Canvas.Font.Height div 2; - - try - s := GetValueText(wg); - except - on E: Exception do - writeln('Detected a error: ', E.Message); - end; - - Canvas.BeginDraw; - Canvas.DrawString(x + 1, fy, s); - Canvas.EndDraw; -end; - -function TVFDWidgetProperty.GetValueText(wg: TfpgWidget): string; -begin - Result := '[' + Name + ']'; -end; - -procedure TVFDWidgetProperty.OnExternalEdit(wg: TfpgWidget); -begin - writeln('external edit'); -end; - -{ TVFDPropertyEditor } - -constructor TVFDPropertyEditor.Create(AOwner: TComponent; aprop: TVFDWidgetProperty); -begin - inherited Create(AOwner); - OnUpdate := nil; - FProp := aprop; -end; - -procedure TVFDPropertyEditor.CreateLayout; -begin - //abstract -end; - -procedure TVFDPropertyEditor.LoadValue(wg: TfpgWidget); -begin - Writeln('abstract: editor.LoadValue'); -end; - -procedure TVFDPropertyEditor.UpdateProperty(Sender: TObject); -begin - if Assigned(OnUpdate) then - OnUpdate(self); -end; - -procedure TVFDPropertyEditor.StoreValue(wg: TfpgWidget); -begin - Writeln('abstract: editor.StoreValue'); - // check property type - // the property must be published ! - // PPropInfo := GetPropInfo(object, 'propname'); - // if PPropInfo^.PropType^.name = -end; - -end. - diff --git a/examples/apps/uidesigner/vfdwidgets.pas b/examples/apps/uidesigner/vfdwidgets.pas deleted file mode 100644 index 099cf4c5..00000000 --- a/examples/apps/uidesigner/vfdwidgets.pas +++ /dev/null @@ -1,453 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - Setting up of widgets, properties and images. -} - -unit vfdwidgets; - -{$mode objfpc}{$H+} - -interface - -uses - SysUtils, - Classes, - contnrs, - vfdwidgetclass, - vfdprops, - typinfo; - -procedure RegisterWidgets; -procedure RegisterVFDWidget(awc: TVFDWidgetClass); -function VFDWidgetCount: integer; -function VFDWidget(ind: integer): TVFDWidgetClass; -function VFDFormWidget: TVFDWidgetClass; - -var - VFDOtherWidget: TVFDWidgetClass; - -implementation - -uses - fpgfx, - vfddesigner, - gui_form, - gui_label, - gui_edit, - gui_button, - gui_listbox, - gui_memo, - gui_combobox, - gui_grid, - gui_checkbox, - gui_panel, - gui_tree, - gui_radiobutton, - gui_listview, - gui_trackbar, - gui_menu, - gui_progressbar, - gui_tab, - gui_popupcalendar, - gui_gauge, - vfdpropeditgrid; - -var - FVFDFormWidget: TVFDWidgetClass; - FVFDWidgets: TObjectList; - -function VFDFormWidget: TVFDWidgetClass; -begin - Result := FVFDFormWidget; -end; - -function VFDWidgetCount: integer; -begin - Result := FVFDWidgets.Count; -end; - -function VFDWidget(ind: integer): TVFDWidgetClass; -begin - Result := TVFDWidgetClass(FVFDWidgets[ind]); -end; - -procedure RegisterVFDWidget(awc: TVFDWidgetClass); -begin - FVFDWidgets.Add(awc); -end; - -{$I icons.inc} - -procedure LoadIcons; -begin - fpgImages.AddMaskedBMP( - 'vfd.arrow', @stdimg_vfd_arrow, - sizeof(stdimg_vfd_arrow), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.label', @stdimg_vfd_label, - sizeof(stdimg_vfd_label), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.edit', @stdimg_vfd_edit, - sizeof(stdimg_vfd_edit), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.memo', @stdimg_vfd_memo, - sizeof(stdimg_vfd_memo), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.button', @stdimg_vfd_button, - sizeof(stdimg_vfd_button), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.checkbox', @stdimg_vfd_checkbox, - sizeof(stdimg_vfd_checkbox), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.listbox', @stdimg_vfd_listbox, - sizeof(stdimg_vfd_listbox), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.combobox', @stdimg_vfd_combobox, - sizeof(stdimg_vfd_combobox), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.panel', @stdimg_vfd_panel, - sizeof(stdimg_vfd_panel), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.other', @stdimg_vfd_other, - sizeof(stdimg_vfd_other), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.dbgrid', @stdimg_vfd_dbgrid, - sizeof(stdimg_vfd_dbgrid), - 15,0 ); - - fpgImages.AddMaskedBMP( - 'vfd.progressbar', @stdimg_vfd_progressbar, - sizeof(stdimg_vfd_progressbar), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.trackbar', @stdimg_vfd_trackbar, - sizeof(stdimg_vfd_trackbar), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.gauge', @stdimg_vfd_gauge, - sizeof(stdimg_vfd_gauge), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.menubar', @stdimg_vfd_menubar, - sizeof(stdimg_vfd_menubar), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.listview', @stdimg_vfd_listview, - sizeof(stdimg_vfd_listview), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.stringgrid', @stdimg_vfd_stringgrid, - sizeof(stdimg_vfd_stringgrid), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.radiobutton', @stdimg_vfd_radiobutton, - sizeof(stdimg_vfd_radiobutton), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.pagecontrol', @stdimg_vfd_pagecontrol, - sizeof(stdimg_vfd_pagecontrol), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.treeview', @stdimg_vfd_treeview, - sizeof(stdimg_vfd_treeview), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.newform', @stdimg_vfd_newform, - sizeof(stdimg_vfd_newform), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.combodateedit', @stdimg_vfd_dateedit, - sizeof(stdimg_vfd_dateedit), - 0, 0); - - fpgImages.AddMaskedBMP( - 'vfd.bevel', @stdimg_vfd_bevel, - sizeof(stdimg_vfd_bevel), - 0, 0); - -end; - -procedure AddWidgetPosProps(wgc: TVFDWidgetClass); -begin - wgc.AddProperty('Left', TPropertyInteger, ''); - wgc.AddProperty('Top', TPropertyInteger, ''); - wgc.AddProperty('Width', TPropertyInteger, ''); - wgc.AddProperty('Height', TPropertyInteger, ''); -end; - -procedure RegisterWidgets; -var - wc: TVFDWidgetClass; -begin - LoadIcons; - - wc := TVFDWidgetClass.Create(TfpgForm); - wc.NameBase := 'frm'; - wc.AddProperty('WindowTitle', TPropertyString, ''); -// wc.AddProperty('WindowPosition', TPropertyEnum, ''); - FVFDFormWidget := wc; - - // Label - wc := TVFDWidgetClass.Create(TfpgLabel); - wc.NameBase := 'lblName'; - wc.AddProperty('Alignment', TPropertyEnum, 'Horizontal text alignment'); - wc.AddProperty('FontDesc', TPropertyFontDesc, 'The font used for displaying the label text'); - wc.AddProperty('Layout', TPropertyEnum, 'Vertical text layout'); - wc.AddProperty('Text', TPropertyString, 'Label text'); - wc.AddProperty('WrapText', TPropertyBoolean, 'If True text will wrap when it doesn''t fit the width'); - wc.WidgetIconName := 'vfd.label'; - RegisterVFDWidget(wc); - - // Edit - wc := TVFDWidgetClass.Create(TfpgEdit); - wc.NameBase := 'edtName'; -// wc.AddProperty('Color', TPropertyColor, 'Text color'); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.AddProperty('Text', TPropertyString, 'Initial text'); - wc.AddProperty('FontDesc', TPropertyFontDesc, 'The font used for displaying the text'); - wc.WidgetIconName := 'vfd.edit'; - RegisterVFDWidget(wc); - - // Memo - wc := TVFDWidgetClass.Create(TfpgMemo); - wc.NameBase := 'memName'; - wc.AddProperty('Lines', TPropertyStringList, ''); - wc.AddProperty('FontDesc', TPropertyFontDesc, 'The font used for displaying the text'); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.WidgetIconName := 'vfd.memo'; - RegisterVFDWidget(wc); - - // Button - wc := TVFDWidgetClass.Create(TfpgButton); - wc.NameBase := 'btnName'; - wc.AddProperty('Text', TPropertyString, 'Initial text'); - wc.AddProperty('AllowAllUp', TPropertyBoolean, ''); - wc.AddProperty('Embedded', TPropertyBoolean, 'No focus rectangle will be drawn. eg: Toolbar buttons'); - wc.AddProperty('Flat', TPropertyBoolean, 'Only draw button borders when mouse hovers over button'); - wc.AddProperty('FontDesc', TPropertyFontDesc, 'The font used for displaying the text'); - wc.AddProperty('GroupIndex', TPropertyInteger, ''); - wc.AddProperty('ImageLayout', TPropertyEnum, 'Which side of the button contains the image'); - wc.AddProperty('ImageMargin', TPropertyInteger, 'Space between image and border, -1 centers image/text'); - wc.AddProperty('ImageName', TPropertyString, ''); - wc.AddProperty('ImageSpacing', TPropertyInteger, 'Space between image and text, -1 centers text'); - wc.AddProperty('ModalResult', TPropertyInteger, ''); - wc.AddProperty('ShowImage', TPropertyBoolean, 'Boolean value'); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.WidgetIconName := 'vfd.button'; - RegisterVFDWidget(wc); - - // CheckBox - wc := TVFDWidgetClass.Create(TfpgCheckBox); - wc.NameBase := 'cbName'; - wc.AddProperty('Checked', TPropertyBoolean, 'Boolean value'); - wc.AddProperty('FontDesc', TPropertyFontDesc, 'The font used for displaying the text'); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.AddProperty('Text', TPropertyString, 'Initial text'); - wc.WidgetIconName := 'vfd.checkbox'; - RegisterVFDWidget(wc); - - // RadioButton - wc := TVFDWidgetClass.Create(TfpgRadioButton); - wc.NameBase := 'rbName'; - wc.AddProperty('Checked', TPropertyBoolean, 'Boolean value'); - wc.AddProperty('FontDesc', TPropertyFontDesc, 'The font used for displaying the text'); - wc.AddProperty('GroupIndex', TPropertyInteger, ''); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.AddProperty('Text', TPropertyString, 'Initial text'); - wc.WidgetIconName := 'vfd.radiobutton'; - RegisterVFDWidget(wc); - - // ComboBox - wc := TVFDWidgetClass.Create(TfpgComboBox); - wc.NameBase := 'cbName'; - wc.AddProperty('FontDesc', TPropertyFontDesc, 'The font used for displaying the text'); - wc.AddProperty('Items', TPropertyStringList, ''); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.WidgetIconName := 'vfd.combobox'; - RegisterVFDWidget(wc); - - // Calendar ComboBox - wc := TVFDWidgetClass.Create(TfpgCalendarCombo); - wc.NameBase := 'calName'; - wc.AddProperty('FontDesc', TPropertyFontDesc, 'The font used for displaying the text'); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.WidgetIconName := 'vfd.combodateedit'; - RegisterVFDWidget(wc); - - // ListBox - wc := TVFDWidgetClass.Create(TfpgListBox); - wc.NameBase := 'lstName'; - wc.AddProperty('FontDesc', TPropertyFontDesc, 'The font used for displaying the text'); - wc.AddProperty('HotTrack', TPropertyBoolean, ''); - wc.AddProperty('Items', TPropertyStringList, ''); - wc.AddProperty('PopupFrame', TPropertyBoolean, ''); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.WidgetIconName := 'vfd.listbox'; - RegisterVFDWidget(wc); - - // StringGrid - wc := TVFDWidgetClass.Create(TfpgStringGrid); - wc.NameBase := 'grdName'; - wc.AddProperty('Columns', TPropertyDBColumns, ''); - wc.AddProperty('FontDesc', TPropertyFontDesc, ''); - wc.AddProperty('HeaderFontDesc', TPropertyFontDesc, ''); - wc.AddProperty('RowCount', TPropertyInteger, ''); - wc.AddProperty('RowSelect', TPropertyBoolean, ''); - wc.AddProperty('ShowHeader', TPropertyBoolean, ''); - wc.AddProperty('ShowGrid', TPropertyBoolean, ''); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.WidgetIconName := 'vfd.stringgrid'; - RegisterVFDWidget(wc); - - // Bevel - wc := TVFDWidgetClass.Create(TfpgBevel); - wc.NameBase := 'bvlName'; - wc.AddProperty('BorderStyle', TPropertyEnum, 'Single or Double'); - wc.AddProperty('Style', TPropertyEnum, 'Raised or Lower look'); - wc.AddProperty('Shape', TPropertyEnum, 'Box, Frame, TopLine, Spacer etc..'); - wc.WidgetIconName := 'vfd.bevel'; - wc.Container := True; - RegisterVFDWidget(wc); - - // Panel - wc := TVFDWidgetClass.Create(TfpgPanel); - wc.NameBase := 'pnlName'; - wc.AddProperty('Alignment', TPropertyEnum, 'Text alignment'); - wc.AddProperty('Layout', TPropertyEnum, 'Layout of the caption'); - wc.AddProperty('LineSpace', TPropertyInteger, 'Line spacing between wrapped caption'); - wc.AddProperty('Margin', TPropertyInteger, 'Margin of text'); - wc.AddProperty('Style', TPropertyEnum, ''); - wc.AddProperty('Text', TPropertyString, 'The panel caption'); - wc.AddProperty('WrapText', TPropertyBoolean, 'Should the panel text be wrapped'); - wc.WidgetIconName := 'vfd.panel'; - wc.Container := True; - RegisterVFDWidget(wc); - - // ProgressBar - wc := TVFDWidgetClass.Create(TfpgProgressBar); - wc.NameBase := 'pbName'; - wc.AddProperty('Min', TPropertyInteger, ''); - wc.AddProperty('Max', TPropertyInteger, ''); - wc.AddProperty('Position', TPropertyInteger, ''); - wc.AddProperty('ShowCaption', TPropertyBoolean, ''); - wc.WidgetIconName := 'vfd.progressbar'; - RegisterVFDWidget(wc); - - // TrackBar - wc := TVFDWidgetClass.Create(TfpgTrackBar); - wc.NameBase := 'tbName'; - wc.AddProperty('Max', TPropertyInteger, ''); - wc.AddProperty('Min', TPropertyInteger, ''); - wc.AddProperty('Orientation', TPropertyEnum, ''); - wc.AddProperty('Position', TPropertyInteger, ''); - wc.AddProperty('ShowPosition', TPropertyBoolean, ''); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.WidgetIconName := 'vfd.trackbar'; - RegisterVFDWidget(wc); - - // ListView - wc := TVFDWidgetClass.Create(TfpgListView); - wc.NameBase := 'lvName'; - wc.AddProperty('MultiSelect', TPropertyBoolean, ''); - wc.AddProperty('ShowHeaders', TPropertyBoolean, ''); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.WidgetIconName := 'vfd.listview'; - RegisterVFDWidget(wc); - - // Treeview - wc := TVFDWidgetClass.Create(TfpgTreeView); - wc.NameBase := 'tvName'; - wc.AddProperty('DefaultColumnWidth',TPropertyInteger, ''); - wc.AddProperty('FontDesc',TPropertyFontDesc, ''); - wc.AddProperty('ScrollWheelDelta', TPropertyInteger, 'Scroll amount with mouse wheel'); - wc.AddProperty('ShowColumns',TPropertyBoolean, 'Boolean value'); - wc.AddProperty('ShowImages',TPropertyBoolean, 'Boolean value'); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.AddProperty('TreeLineStyle', TPropertyEnum, ''); - wc.WidgetIconName := 'vfd.treeview'; - RegisterVFDWidget(wc); - - // PageControl - wc := TVFDWidgetClass.Create(TfpgPageControl); - wc.NameBase := 'pcName'; - wc.AddProperty('FixedTabWidth', TPropertyInteger, ''); - wc.AddProperty('SortPages', TPropertyBoolean, 'Boolean value'); - wc.AddProperty('Style', TPropertyEnum, ''); - wc.AddProperty('TabOrder', TPropertyInteger, 'The tab order'); - wc.AddProperty('TabPosition', TPropertyEnum, ''); - wc.WidgetIconName := 'vfd.pagecontrol'; - RegisterVFDWidget(wc); - - // Gauge - wc := TVFDWidgetClass.Create(TfpgGauge); - wc.NameBase := 'gauName'; - wc.AddProperty('Kind', TPropertyEnum, ''); - wc.AddProperty('MinValue', TPropertyInteger, ''); - wc.AddProperty('MaxValue', TPropertyInteger, ''); - wc.AddProperty('Progress', TPropertyInteger, ''); - wc.AddProperty('ShowText', TPropertyBoolean, 'Boolean value'); - wc.WidgetIconName := 'vfd.gauge'; - RegisterVFDWidget(wc); - - - // Other - do not delete!!! this should be the last... - wc := TVFDWidgetClass.Create(TOtherWidget); - wc.NameBase := 'Custom'; - wc.WidgetIconName := 'vfd.other'; - wc.Container := True; - RegisterVFDWidget(wc); - VFDOtherWidget := wc; -end; - - -initialization - FVFDWidgets := TObjectList.Create; - -finalization - FVFDWidgets.Free; - FVFDFormWidget.Free; - -end. - |