Diese Seite mit anderen teilen ...

Informationen zum Thema:
WinDev Forum
Beiträge im Thema:
Erster Beitrag:
vor 1 Jahr
Letzter Beitrag:
vor 11 Monaten, 2 Wochen
Beteiligte Autoren:
Tor-Bjarne, Noel Tanti, Luiz Menezes, Yogi Yang, biju, Stefan Bentvelsen

WinDev Groupware made for you.

Startbeitrag von Tor-Bjarne am 03.06.2017 17:21


After struggling with the PCSoft groupware, I finally abandon it, and decided to make my own.

In my current project (for a client) we want to restrict access, but managers can press F11 log in as administrator and disable access, then log inn as user again without restarting the app. Or a manager needs to press the [Only Admins] button he can do that in the same manner.

Now I want to share my cGroupware class with anybody that`s want it, as a part of "giving a little back" to this great community, :)

An small exedemo can be found Here... just unzip in a folder and run the executable file.

Info about the demo, it mainly containing the Admin and User users (and Admin and User groups), password is blank/Nothing on both.

F11 = Login/Change userid
F12 = Inspect screen (where you set or revoke access)

The only buttons that actually do something can be found in the system ribbon.

Might not be suitable for all, but perhaps good starting point if you want to write your own.


1. One class,One table in the analyze and 2 Windows (Win_Logon,Win_inspect) makes the wholde thing work.

2. You can change userID run-time, no need to restart app to change userID and rights

3. The Inspect screen/Window reads only controls for the window your in, not all - making it simpler to disallow controls "in this Window"

4. Farley easy implementation with your app and if you have existing usergroup/Users tables.
(I will/can write a short PDF Document describing how, if anybody is interested)

5. Written in WinDev 20, I`m on v22 and are using it here, so nothing is problematic about upgrading.
(WinDev 20 is the lowest Window version I have on this PC for the moment)

6. Since WinDev v22 lets you edit a screen I made it possible to change fonts, brushcolors etc. depending on user-group you are logged into.

7. Timed auto-logout or auto-logon as "other" user (perhaps with lower rights)

Some points/limitations of my groupware:

1. Unlike PCSoft`s solution a userid must exist in a group, and the group is actually what you set the rights for.
2. A Userid must be unique. You can not have same userid but in different groups.
3. When pressing F-something (Demo app uses F12) to get the inspect window the controls are read run-time.
4. It has bugs - Yes I also do bugs, not on purpose, but still.
5. I tried to keep the code clean, but some might not agree, I however personally hate statements like:

MySelf..Caption=(MySelf..Pushed?"Trace ON" ELSE "Trace OFF")

Not easy to see whats going on here huh?,... having said that, I copied the example from my own code :D but it`s just one place and in the test-project, not the groupware.

Now, it`s quite time consuming writing documentation, and if no one is interested I don`t :)

Please let me know if you are interested and wants some examples on how to load your usergroup/users into my system.

If you do use it and correct bugs or make smart changes, I would like to get a copy.

Anyhow enough said, here is the link to the Project



Hi Tor-Bjarne,

thanks for sharing this project.
It looks quit nice and simple to use.

von Stefan Bentvelsen - am 03.06.2017 19:21
Hi Tor-Bjarne,

Thanks for your contribution.
I also had difficulties with groupware where the project had multiple configurations and also where the data resided on remote servers.
I need something like that but I do not feel up to it.

Thanks & regards

von Noel Tanti - am 04.06.2017 08:40

Thank you guys :)

I also made a (sort of) user manual that can be found HERE ...

And I made some small cosmetic changes to the Win_Inspect Window (and resolving a small bug) in the updated project (same link as before)


von Tor-Bjarne - am 04.06.2017 15:31
Hello Tor-Bjarne,

Thanks for your contribution both the Gpw Project and Documentation.

- Biju

von biju - am 05.06.2017 09:39

Thank you Biju :)

Yesterday I removed the Worst typos from my short manual.

And today (As I`m implementing it in a v22 project I discovered a bug when changing an existing username) now corrected in the v1.2 that I put out on the server.

the cGroupware::Version contains (from v1.1), contains version of the class.


von Tor-Bjarne - am 05.06.2017 11:19
Hello Tor-Bjarne,

Thanks for sharing your hard work.

I have never used this feature till date but after studying your code I think it would be apiece of cake to implement GW.


von Yogi Yang - am 17.06.2017 10:34
Thank you Yogi :)

I made a new chapter for people "in a hurry" named "How I quick-implemented gw in a couple of projects", this shows how to get groupware to work with your existing user/employe table with minimal effort, "Quick and Dirty" in other words :D

Link as before.

EDIT: You might have to press F5 - refresh in you browser to get the new version of the "manual"


von Tor-Bjarne - am 18.06.2017 10:12
Thanks Tor-Bjarne.

von Luiz Menezes - am 05.07.2017 14:42
Hi Luiz,

No Problem :)

Actually I put out a new version today (v1.3) with some minor changes, on the same spot/link that has the following changes.

- in later editions (frm v1.3) of my class I removed the ::Save from the "destructor" - no need to save if no one has touched the arrays.

And the ::save is called from the Win_inspect closing code anyhow.

- I now check if a record has been changed in the ::save method to, if not, it do not save.
- The Win_Inspect sets the variable bChanged = True on the ::ExtraOpt and ::ExtraInit arrays when changing

These changes are important in a multi user environment.

If anybody want`s to manually change, here are the changes:

In the definition of the STControlextra structure a variable bChanged has been added:

STControlextra is Structure
sControlName is string
sParentName is string
sGroupName is string
nType is int
fntCharset is string
FntOrientation is int
FntStrikeout is boolean
FntCondensed is boolean
FntCOlor is int
FntExtended is boolean
FntBold is boolean
FntItalic is boolean
FntLarge is boolean
FntName is string
FntUnderline is boolean
FntSize is int

BGColorBlue is int
BGColorColor is int
BGColorLuminance is int
BGColorOpacity is int
BGColorRed is int
BGColorSaturation is int
BGColorHue is int
BGColorGreen is int

FGColorBlue is int
FGColorColor is int
FGColorLuminance is int
FGColorOpacity is int
FGColorRed is int
FGColorSaturation is int
FGColorHue is int
FGColorGreen is int

bgimage is string
sNewCaption is string
bchanged is boolean //

von Tor-Bjarne - am 06.07.2017 07:20
Hi Tor-Bjarne

I would like to ask you about menus.
How do you handle the hide/show/greed out for users?

Thanks & regards

von Noel Tanti - am 06.07.2017 07:40
Noel Tanti
I would like to ask you about menus.
How do you handle the hide/show/greed out for users?

As stated in the manual "1. Menus - I do not use them (agree or not), so there`s no code handling them.


von Tor-Bjarne - am 06.07.2017 08:52
Wrong question :)

are ribbons ok?


von Noel Tanti - am 06.07.2017 10:40

Yes the ribbons are read and can be changed (Visible/grayed/Font/Color), also: Now I put out cGroupware v1.4 where menus are read to :)

So menus are now supported, I change the user-documentation when I have the time.


von Tor-Bjarne - am 06.07.2017 13:20
Hi Tor-Bjarne

that is great :spos:. Much appreciated.


von Noel Tanti - am 06.07.2017 13:43
Made some tests in the DemoExe and Compiled Project, and, after using Alt+F12 instead of F12, it worked fine and liked very much. Good job.

von Luiz Menezes - am 06.07.2017 21:05
Hi Luiz,

Thank you :) - You can use whatever hotkey to the call Win_Inspect or run-time logon with the code:

//Groupware Optional options
cGroupWare::Alternative_InspectKey = VK_F12 //F12 calls the inspector window win_inspect
cGroupWare::Alternative_LogonKey = VK_F11 //F11 calls Run-time login/change user


von Tor-Bjarne - am 06.07.2017 21:32
Zur Information:
MySnip.de hat keinen Einfluss auf die Inhalte der Beiträge. Bitte kontaktieren Sie den Administrator des Forums bei Problemen oder Löschforderungen über die Kontaktseite.
Falls die Kontaktaufnahme mit dem Administrator des Forums fehlschlägt, kontaktieren Sie uns bitte über die in unserem Impressum angegebenen Daten.