Updated FormExDestop and ControlsExDesktop libraries

Zenerdiode

Active Member
Licensed User
I've just found out today; (the hard way) there is an effective 63 character limit for the text property of a NotifyIcon. (64 byte limit, comprising of your 63 characters and the terminator.) Its not a limitation of Agraham's library, its the underlying .Net control and MicroSoft have no intention of correcting it. :(

I know a long string as a tooltip may look a bit tedious, but if you have a couple of lines with CRLFs and providing status information - its surprising how quickly your 63 characters are consumed.
 

Cableguy

Expert
Licensed User
Longtime User
Native Combobox & Tranparent Background

I'm not sure who to adress this issue, but here's the deal...

I have a png file wich is used to create a non-rectangular form, in my case a rounded-corner rectangle...
All work ok, all my controls, both native and dll added, works as expected, except for the combobox...
The Down-arrow clickable area has its background transparent too, making the clickable area to be only the exact shape of the arrow..
If I click in any other part of the "button", the form looses focus, because i am in fact cliking the app in the -1 z-order...
Of ourse, if i take away the transparency of the form, the combobox button reacts normally...but that is not what I want to achieve...
I spendt 5 hours on my forms backround, building it from scratch...NOT wasting time...
I hope I made myself clear enougth....
 

Cableguy

Expert
Licensed User
Longtime User
Hope This helps...

Ibutton4 - the save button -has been stripped from its code so that "the magic" cannot be performed...
 

Cableguy

Expert
Licensed User
Longtime User
It's because the button background is the same colour as the form background, change the form background color to something that you don't use.

Thanks Andrew, I've been so close, but always teaking only the native's form color...assuming it would be passed to the extended form...Wrong assunption...
Using the native form color as the transparecy key does not work as desired.
So my solution, as sugested by you, was to keep using the extended form's backcolor as the transparency key, and set the extended form's Backcolor in my case to Blue, as it is not used in the png file I use to create the form.
 

berndgoedecke

Active Member
Licensed User
Longtime User
ColumnHeader.Icon

Hello Agraham,
I use the ListView control for many facilities, but I miss the feature to set the ColumnHeader.Icon. Is it possible to add it to the DLL or is there a possibility to use it with doorex?

Best Regards

berndgoedecke
 

berndgoedecke

Active Member
Licensed User
Longtime User
Helo Agraham,
in former times, I've used NSBasic to develope Mobile applications.
There exists a library named NSListView, but I don't know if it was a library that
correlates to ListView or DataGrid.
The structure, this library follows, is shown in the attachment.




Best Regards

berndgoedecke
 

Attachments

  • NSLV.jpg
    NSLV.jpg
    45.6 KB · Views: 38

agraham

Expert
Licensed User
Longtime User
the .NET ListView does not have a separate CollumnHeaderIcons collection but headers can display icons from the SmallImageList collection
B4X:
Obj1.New1(False)
Obj1.Value = lv1.ControlRef ' get the ListView control
Obj1.Value = Obj1.GetProperty("Columns") ' get ColumnHeader Collection
Obj1.Value = Obj1.GetProperty2("Item", 0) ' get ColumnHeader
Obj1.SetProperty("ImageIndex", 1) ' set the ImageIndex into the SmallImageList Collection
This only works on the desktop, not on the device.
 
Last edited:

berndgoedecke

Active Member
Licensed User
Longtime User
Thank you

Hello AGraham,
thank you very much for the codelines. I use it to mark the actual choosed column. It looks very nice, I mean.

:sign0098:

Best Regards

berndgoedecke
 

Attachments

  • Table.jpg
    Table.jpg
    23.6 KB · Views: 38

berndgoedecke

Active Member
Licensed User
Longtime User
How to get the Event: ColumnWidthChanged ??

Hello Agraham,
with a little bit more of code I can get the bounds of a ListView-field, to set a Textbox over the Listview and get Input for updating the Data.
It looks like the attached jpeg.
But if the ColumnWidth is changed by the user it should be usefull to access to the ColumnWidthChanged event.
Is it possible???

flvObj.FromControl(flv.ControlRef)
flvObj.Value = flvObj.GetProperty("Items")
flvObj.Value = flvObj.GetProperty2("Item", Main.AktFRow-1)
flvObj.Value = flvObj.GetProperty("SubItems")
flvObj.Value = flvObj.GetProperty2("Item", 1)
LVSIRec.Value = flvObj.GetProperty("Bounds")
'Msgbox(LVSIRec.X & " / " & LVSIRec.Y & " / " & LVSIRec.Width & " / " & LVSIRec.Height)
TBLVItem.Left = LVSIRec.X
TBLVItem.Top = LVSIRec.Y
TBLVItem.Width = LVSIRec.Width
TBLVItem.Height = LVSIRec.Height
TBLVItem.Text = flv.GetSubItem(Main.AktFRow-1, 0)
TBLVItem.Visible = True
TBLVItem.BringToFront


Best regards

berndgoedecke
 

Attachments

  • ListViewBounds.jpg
    ListViewBounds.jpg
    27.3 KB · Views: 22

berndgoedecke

Active Member
Licensed User
Longtime User
Thanks

Thank You Agraham,
I thought something like that.
So I have to work around.

Best regards

berndgoedecke
 

berndgoedecke

Active Member
Licensed User
Longtime User
Another ListView question

Hello Agraham,
here i am again with a List View question in a different context than the last time. Now I want to scroll a Sqlite table record by record in the Report view.
To scroll down, I can erase the first Item and add a new Item at the bottom of the Table Extract. To scroll up, I want to erase the last Item and Insert a new Item at the top of the Table Extract. For that I need the ListItem Collection Method Insert, where the String and the Index are the parameters.
But it would be better to have an InsertArray Method, to Add the Item and SubItems.
Is this possible ??

Best regards

berndgoedecke

Scroll down computes like this:

Sub TSBTNaech_Click 'Next record
If Main.AktTRow = lim-1 Then
If cT < Main.DatAnz-1 Then
Dim TRow(Main.SelSpAnz)
lvTab.SetItemSelected(lvTab.ItemCount-1, False)
lvTab.RemoveItem(0) <--RemoveItem
cTO = Main.GetTOid(cT+1)
Main.SqlStr = "Select " & Main.SelStr & " FROM [" & Main.AktTab & "] WHERE OID = " & cTO & " LIMIT 1"
Main.DatForm(Main.SqlStr, cTO) <--Get Datas from SQlite Table
For i = 0 To Main.SelSpAnz-1
TRow(i) = Main.FCells(1, i)
Next
Main.c = Main.GetTOid(cT + 2 - lim)
lvTab.AddItemArray(TRow()) <--Add Item(Array)
lvTab.SetItemSelected(lvTab.ItemCount-1, True)
Return
End If
End If
If Main.AktTRow < lim -1 Then
lvTab.SetItemSelected(Main.AktTRow, False)
lvTab.SetItemSelected(Main.AktTRow+1, True)
End If
End Sub
 

agraham

Expert
Licensed User
Longtime User
You can't use an array, you will have to set the sub-items individually.
B4X:
Obj1.New1(False)
...
Index = 3
Obj1.Value = Lv1.controlRref
Obj1.Value = Obj1.GetProperty("Items")
Obj1.RunMethod3("Insert", Index, "System.Int32", "An item", "System.String")
lv1.SetItemImageIndex(3,0) ' if you want an image
 

berndgoedecke

Active Member
Licensed User
Longtime User
Thank you again

it works well and step by step I learn more about the Door library and the Framework.
Thank you very much AGraham.

Best regards

berndgoedecke
 
Top