From 7550586c70b0af9d6fe1b6b387f4e6d53b2614df Mon Sep 17 00:00:00 2001 From: Imhotheb Date: Fri, 17 May 2019 19:59:31 +0200 Subject: [PATCH] Add GridGadget Signed-off-by: Imhotheb --- PB.Ex_GridGadget/License.txt | 1 + PB.Ex_GridGadget/PB.Ex_GridGadget.pb | 124 ++++++++++++++++++++++ PB.Ex_GridGadget/PB.Ex_GridGadget.pbi | 103 ++++++++++++++++++ PB.Ex_GridGadget/PB.Ex_GridGadget_x64.dll | Bin 0 -> 18944 bytes PB.Ex_GridGadget/PB.Ex_GridGadget_x86.dll | Bin 0 -> 18944 bytes README.md | 2 + 6 files changed, 230 insertions(+) create mode 100644 PB.Ex_GridGadget/License.txt create mode 100644 PB.Ex_GridGadget/PB.Ex_GridGadget.pb create mode 100644 PB.Ex_GridGadget/PB.Ex_GridGadget.pbi create mode 100644 PB.Ex_GridGadget/PB.Ex_GridGadget_x64.dll create mode 100644 PB.Ex_GridGadget/PB.Ex_GridGadget_x86.dll diff --git a/PB.Ex_GridGadget/License.txt b/PB.Ex_GridGadget/License.txt new file mode 100644 index 0000000..c69cdc1 --- /dev/null +++ b/PB.Ex_GridGadget/License.txt @@ -0,0 +1 @@ +Copyright © 2019 RSBasic.de diff --git a/PB.Ex_GridGadget/PB.Ex_GridGadget.pb b/PB.Ex_GridGadget/PB.Ex_GridGadget.pb new file mode 100644 index 0000000..707dd2c --- /dev/null +++ b/PB.Ex_GridGadget/PB.Ex_GridGadget.pb @@ -0,0 +1,124 @@ +;1.0.1.0 + +EnableExplicit + +Global PBEx_GridGadget + +#PBEx_GridGadget_Version$ = "1.0.1.0" +#PBEx_GridGadget_Flag_AllowAddRows = 1 +#PBEx_GridGadget_Flag_AllowDeleteRows = 2 +#PBEx_GridGadget_Flag_AllowOrderColumns = 4 +#PBEx_GridGadget_Flag_AllowResizeColumns = 8 +#PBEx_GridGadget_Flag_AllowResizeRows = 16 +#PBEx_GridGadget_Flag_AllowResizeColumnHeight = 32 +#PBEx_GridGadget_Flag_AllowResizeRowWidth = 64 +#PBEx_GridGadget_Flag_HideColumnHeader = 128 +#PBEx_GridGadget_Flag_HideRowHeader = 256 +#PBEx_GridGadget_Flag_MultiSelect = 512 +#PBEx_GridGadget_Flag_ReadOnly = 1024 +#PBEx_GridGadget_Flag_AutoColumnWidth = 2048 +#PBEx_GridGadget_Type_Text = 0 +#PBEx_GridGadget_Type_Date = 7 +#PBEx_GridGadget_Type_Lowercase = 12 +#PBEx_GridGadget_Type_Uppercase = 13 +#PBEx_GridGadget_Type_Percent = 15 +#PBEx_GridGadget_Direction_Ascending = 0 +#PBEx_GridGadget_Direction_Descending = 1 +#PBEx_GridGadget_ColumnWidth_AutoColumnWidth = -1 +#PBEx_GridGadget_Attribute_SelectType = 1 +#PBEx_GridGadget_Attribute_SelectType_CellSelect = 1 +#PBEx_GridGadget_Attribute_SelectType_FullRowSelect = 2 +#PBEx_GridGadget_Attribute_SelectType_RowHeaderSelect = 4 + +CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 + PBEx_GridGadget = OpenLibrary(#PB_Any, "PB.Ex_GridGadget_x86.dll") +CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64 + PBEx_GridGadget = OpenLibrary(#PB_Any, "PB.Ex_GridGadget_x64.dll") +CompilerEndIf + +If PBEx_GridGadget + Prototype GridGadget(ID, X, Y, Width, Height, Flags, ParentWindowID, ErrorOutput) + Global GridGadget.GridGadget = GetFunction(PBEx_GridGadget, "GridGadget") + Prototype AddGridGadgetColumn(ID, Position, Type, Text.p-Unicode, Width, ErrorOutput) + Global AddGridGadgetColumn.AddGridGadgetColumn = GetFunction(PBEx_GridGadget, "AddGridGadgetColumn") + Prototype RemoveGridGadgetColumn(ID, Position, ErrorOutput) + Global RemoveGridGadgetColumn.RemoveGridGadgetColumn = GetFunction(PBEx_GridGadget, "RemoveGridGadgetColumn") + Prototype AddGridGadgetItem(ID, Position, Text.p-Unicode, ErrorOutput) + Global AddGridGadgetItem.AddGridGadgetItem = GetFunction(PBEx_GridGadget, "AddGridGadgetItem") + Prototype RemoveGridGadgetItem(ID, Position, ErrorOutput) + Global RemoveGridGadgetItem.RemoveGridGadgetItem = GetFunction(PBEx_GridGadget, "RemoveGridGadgetItem") + Prototype CountGridGadgetColumns(ID, ErrorOutput) + Global CountGridGadgetColumns.CountGridGadgetColumns = GetFunction(PBEx_GridGadget, "CountGridGadgetColumns") + Prototype CountGridGadgetItems(ID, ErrorOutput) + Global CountGridGadgetItems.CountGridGadgetItems = GetFunction(PBEx_GridGadget, "CountGridGadgetItems") + Prototype ClearGridGadgetColumns(ID, ErrorOutput) + Global ClearGridGadgetColumns.ClearGridGadgetColumns = GetFunction(PBEx_GridGadget, "ClearGridGadgetColumns") + Prototype ClearGridGadgetItems(ID, ErrorOutput) + Global ClearGridGadgetItems.ClearGridGadgetItems = GetFunction(PBEx_GridGadget, "ClearGridGadgetItems") + Prototype GetGridGadgetColumnText(ID, Position, Output, ErrorOutput) + Global GetGridGadgetColumnText.GetGridGadgetColumnText = GetFunction(PBEx_GridGadget, "GetGridGadgetColumnText") + Prototype SetGridGadgetColumnText(ID, Position, Text.p-Unicode, ErrorOutput) + Global SetGridGadgetColumnText.SetGridGadgetColumnText = GetFunction(PBEx_GridGadget, "SetGridGadgetColumnText") + Prototype GetGridGadgetItemText(ID, Position, Column, Output, ErrorOutput) + Global GetGridGadgetItemText.GetGridGadgetItemText = GetFunction(PBEx_GridGadget, "GetGridGadgetItemText") + Prototype SetGridGadgetItemText(ID, Position, Column, Text.p-Unicode, ErrorOutput) + Global SetGridGadgetItemText.SetGridGadgetItemText = GetFunction(PBEx_GridGadget, "SetGridGadgetItemText") + Prototype FreeGridGadget(ID, ErrorOutput) + Global FreeGridGadget.FreeGridGadget = GetFunction(PBEx_GridGadget, "FreeGridGadget") + Prototype GridGadgetWidth(ID, ErrorOutput) + Global GridGadgetWidth.GridGadgetWidth = GetFunction(PBEx_GridGadget, "GridGadgetWidth") + Prototype GridGadgetHeight(ID, ErrorOutput) + Global GridGadgetHeight.GridGadgetHeight = GetFunction(PBEx_GridGadget, "GridGadgetHeight") + Prototype GridGadgetX(ID, ErrorOutput) + Global GridGadgetX.GridGadgetX = GetFunction(PBEx_GridGadget, "GridGadgetX") + Prototype GridGadgetY(ID, ErrorOutput) + Global GridGadgetY.GridGadgetY = GetFunction(PBEx_GridGadget, "GridGadgetY") + Prototype GridGadgetID(ID, ErrorOutput) + Global GridGadgetID.GridGadgetID = GetFunction(PBEx_GridGadget, "GridGadgetID") + Prototype HideGridGadget(ID, State, ErrorOutput) + Global HideGridGadget.HideGridGadget = GetFunction(PBEx_GridGadget, "HideGridGadget") + Prototype IsGridGadget(ID, ErrorOutput) + Global IsGridGadget.IsGridGadget = GetFunction(PBEx_GridGadget, "IsGridGadget") + Prototype ResizeGridGadget(ID, X, Y, Width, Height, ErrorOutput) + Global ResizeGridGadget.ResizeGridGadget = GetFunction(PBEx_GridGadget, "ResizeGridGadget") + Prototype SortGridGadgetColumn(ID, Column, Direction, ErrorOutput) + Global SortGridGadgetColumn.SortGridGadgetColumn = GetFunction(PBEx_GridGadget, "SortGridGadgetColumn") + Prototype DisableGridGadget(ID, State, ErrorOutput) + Global DisableGridGadget.DisableGridGadget = GetFunction(PBEx_GridGadget, "DisableGridGadget") + Prototype SetGridGadgetAttribute(ID, Attribute, Value, ErrorOutput) + Global SetGridGadgetAttribute.SetGridGadgetAttribute = GetFunction(PBEx_GridGadget, "SetGridGadgetAttribute") + Prototype GetGridGadgetAttribute(ID, Attribute, ErrorOutput) + Global GetGridGadgetAttribute.GetGridGadgetAttribute = GetFunction(PBEx_GridGadget, "GetGridGadgetAttribute") + +EndIf + +Global Output$ = Space(1024) +Global ErrorOutput$ = Space(128) +Global a + +If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) + GridGadget(1, 0, 0, 500, 400, #PBEx_GridGadget_Flag_AllowAddRows | #PBEx_GridGadget_Flag_AllowDeleteRows | #PBEx_GridGadget_Flag_AutoColumnWidth | #PBEx_GridGadget_Flag_MultiSelect, WindowID(0), @ErrorOutput$) + AddGridGadgetColumn(1, -1, 0, "Column 1", 100, @ErrorOutput$) + AddGridGadgetColumn(1, -1, 0, "Column 2", 100, @ErrorOutput$) + AddGridGadgetColumn(1, -1, 0, "Column 3", 100, @ErrorOutput$) + + For a=1 To 9 + AddGridGadgetItem(1, -1, "Hello " + Str(a) + Chr(10) + "PureBasic " + Str(a) + Chr(10) + "Friends " + Str(a), @ErrorOutput$) + Next + + Repeat + Select WaitWindowEvent() + Case #PB_Event_CloseWindow + CloseLibrary(PBEx_GridGadget) + End + EndSelect + ForEver +EndIf +; IDE Options = PureBasic 5.60 (Windows - x64) +; EnableXP +; EnableUser +; Executable = PB.Ex_MSSQL.exe +; CompileSourceDirectory +; EnableCompileCount = 1245 +; EnableBuildCount = 7 +; EnableUnicode \ No newline at end of file diff --git a/PB.Ex_GridGadget/PB.Ex_GridGadget.pbi b/PB.Ex_GridGadget/PB.Ex_GridGadget.pbi new file mode 100644 index 0000000..79dfc71 --- /dev/null +++ b/PB.Ex_GridGadget/PB.Ex_GridGadget.pbi @@ -0,0 +1,103 @@ +;1.0.1.0 + +EnableExplicit + +Global PBEx_GridGadget + +#PBEx_GridGadget_Version$ = "1.0.1.0" +#PBEx_GridGadget_Flag_AllowAddRows = 1 +#PBEx_GridGadget_Flag_AllowDeleteRows = 2 +#PBEx_GridGadget_Flag_AllowOrderColumns = 4 +#PBEx_GridGadget_Flag_AllowResizeColumns = 8 +#PBEx_GridGadget_Flag_AllowResizeRows = 16 +#PBEx_GridGadget_Flag_AllowResizeColumnHeight = 32 +#PBEx_GridGadget_Flag_AllowResizeRowWidth = 64 +#PBEx_GridGadget_Flag_HideColumnHeader = 128 +#PBEx_GridGadget_Flag_HideRowHeader = 256 +#PBEx_GridGadget_Flag_MultiSelect = 512 +#PBEx_GridGadget_Flag_ReadOnly = 1024 +#PBEx_GridGadget_Flag_AutoColumnWidth = 2048 +#PBEx_GridGadget_Type_Text = 0 +#PBEx_GridGadget_Type_Date = 7 +#PBEx_GridGadget_Type_Lowercase = 12 +#PBEx_GridGadget_Type_Uppercase = 13 +#PBEx_GridGadget_Type_Percent = 15 +#PBEx_GridGadget_Direction_Ascending = 0 +#PBEx_GridGadget_Direction_Descending = 1 +#PBEx_GridGadget_ColumnWidth_AutoColumnWidth = -1 +#PBEx_GridGadget_Attribute_SelectType = 1 +#PBEx_GridGadget_Attribute_SelectType_CellSelect = 1 +#PBEx_GridGadget_Attribute_SelectType_FullRowSelect = 2 +#PBEx_GridGadget_Attribute_SelectType_RowHeaderSelect = 4 + +CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 + PBEx_GridGadget = OpenLibrary(#PB_Any, "PB.Ex_GridGadget_x86.dll") +CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64 + PBEx_GridGadget = OpenLibrary(#PB_Any, "PB.Ex_GridGadget_x64.dll") +CompilerEndIf + +If PBEx_GridGadget + Prototype GridGadget(ID, X, Y, Width, Height, Flags, ParentWindowID, ErrorOutput) + Global GridGadget.GridGadget = GetFunction(PBEx_GridGadget, "GridGadget") + Prototype AddGridGadgetColumn(ID, Position, Type, Text.p-Unicode, Width, ErrorOutput) + Global AddGridGadgetColumn.AddGridGadgetColumn = GetFunction(PBEx_GridGadget, "AddGridGadgetColumn") + Prototype RemoveGridGadgetColumn(ID, Position, ErrorOutput) + Global RemoveGridGadgetColumn.RemoveGridGadgetColumn = GetFunction(PBEx_GridGadget, "RemoveGridGadgetColumn") + Prototype AddGridGadgetItem(ID, Position, Text.p-Unicode, ErrorOutput) + Global AddGridGadgetItem.AddGridGadgetItem = GetFunction(PBEx_GridGadget, "AddGridGadgetItem") + Prototype RemoveGridGadgetItem(ID, Position, ErrorOutput) + Global RemoveGridGadgetItem.RemoveGridGadgetItem = GetFunction(PBEx_GridGadget, "RemoveGridGadgetItem") + Prototype CountGridGadgetColumns(ID, ErrorOutput) + Global CountGridGadgetColumns.CountGridGadgetColumns = GetFunction(PBEx_GridGadget, "CountGridGadgetColumns") + Prototype CountGridGadgetItems(ID, ErrorOutput) + Global CountGridGadgetItems.CountGridGadgetItems = GetFunction(PBEx_GridGadget, "CountGridGadgetItems") + Prototype ClearGridGadgetColumns(ID, ErrorOutput) + Global ClearGridGadgetColumns.ClearGridGadgetColumns = GetFunction(PBEx_GridGadget, "ClearGridGadgetColumns") + Prototype ClearGridGadgetItems(ID, ErrorOutput) + Global ClearGridGadgetItems.ClearGridGadgetItems = GetFunction(PBEx_GridGadget, "ClearGridGadgetItems") + Prototype GetGridGadgetColumnText(ID, Position, Output, ErrorOutput) + Global GetGridGadgetColumnText.GetGridGadgetColumnText = GetFunction(PBEx_GridGadget, "GetGridGadgetColumnText") + Prototype SetGridGadgetColumnText(ID, Position, Text.p-Unicode, ErrorOutput) + Global SetGridGadgetColumnText.SetGridGadgetColumnText = GetFunction(PBEx_GridGadget, "SetGridGadgetColumnText") + Prototype GetGridGadgetItemText(ID, Position, Column, Output, ErrorOutput) + Global GetGridGadgetItemText.GetGridGadgetItemText = GetFunction(PBEx_GridGadget, "GetGridGadgetItemText") + Prototype SetGridGadgetItemText(ID, Position, Column, Text.p-Unicode, ErrorOutput) + Global SetGridGadgetItemText.SetGridGadgetItemText = GetFunction(PBEx_GridGadget, "SetGridGadgetItemText") + Prototype FreeGridGadget(ID, ErrorOutput) + Global FreeGridGadget.FreeGridGadget = GetFunction(PBEx_GridGadget, "FreeGridGadget") + Prototype GridGadgetWidth(ID, ErrorOutput) + Global GridGadgetWidth.GridGadgetWidth = GetFunction(PBEx_GridGadget, "GridGadgetWidth") + Prototype GridGadgetHeight(ID, ErrorOutput) + Global GridGadgetHeight.GridGadgetHeight = GetFunction(PBEx_GridGadget, "GridGadgetHeight") + Prototype GridGadgetX(ID, ErrorOutput) + Global GridGadgetX.GridGadgetX = GetFunction(PBEx_GridGadget, "GridGadgetX") + Prototype GridGadgetY(ID, ErrorOutput) + Global GridGadgetY.GridGadgetY = GetFunction(PBEx_GridGadget, "GridGadgetY") + Prototype GridGadgetID(ID, ErrorOutput) + Global GridGadgetID.GridGadgetID = GetFunction(PBEx_GridGadget, "GridGadgetID") + Prototype HideGridGadget(ID, State, ErrorOutput) + Global HideGridGadget.HideGridGadget = GetFunction(PBEx_GridGadget, "HideGridGadget") + Prototype IsGridGadget(ID, ErrorOutput) + Global IsGridGadget.IsGridGadget = GetFunction(PBEx_GridGadget, "IsGridGadget") + Prototype ResizeGridGadget(ID, X, Y, Width, Height, ErrorOutput) + Global ResizeGridGadget.ResizeGridGadget = GetFunction(PBEx_GridGadget, "ResizeGridGadget") + Prototype SortGridGadgetColumn(ID, Column, Direction, ErrorOutput) + Global SortGridGadgetColumn.SortGridGadgetColumn = GetFunction(PBEx_GridGadget, "SortGridGadgetColumn") + Prototype DisableGridGadget(ID, State, ErrorOutput) + Global DisableGridGadget.DisableGridGadget = GetFunction(PBEx_GridGadget, "DisableGridGadget") + Prototype SetGridGadgetAttribute(ID, Attribute, Value, ErrorOutput) + Global SetGridGadgetAttribute.SetGridGadgetAttribute = GetFunction(PBEx_GridGadget, "SetGridGadgetAttribute") + Prototype GetGridGadgetAttribute(ID, Attribute, ErrorOutput) + Global GetGridGadgetAttribute.GetGridGadgetAttribute = GetFunction(PBEx_GridGadget, "GetGridGadgetAttribute") + +EndIf +; IDE Options = PureBasic 5.60 (Windows - x64) +; CursorPosition = 92 +; FirstLine = 32 +; EnableXP +; EnableUser +; Executable = PB.Ex_MSSQL.exe +; CompileSourceDirectory +; EnableCompileCount = 450 +; EnableBuildCount = 7 +; EnableUnicode \ No newline at end of file diff --git a/PB.Ex_GridGadget/PB.Ex_GridGadget_x64.dll b/PB.Ex_GridGadget/PB.Ex_GridGadget_x64.dll new file mode 100644 index 0000000000000000000000000000000000000000..832360410b9d73ddb07e98b32d154e83734dd14e GIT binary patch literal 18944 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 literal 0 HcmV?d00001 diff --git a/PB.Ex_GridGadget/PB.Ex_GridGadget_x86.dll b/PB.Ex_GridGadget/PB.Ex_GridGadget_x86.dll new file mode 100644 index 0000000000000000000000000000000000000000..deb506412c141166193baeba80f4ac8a8d1b322f GIT binary patch literal 18944 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 fPPd+JJ=6MF>(i~@ZGEM+z3tMg`Mu`