From 85f91d87aa226cf978f6d7e2c4ea0342ebd844e1 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Wed, 16 Apr 2008 15:34:51 +0000 Subject: [PATCH] Dynamically fetch names of privileges on the "Add user" tab of the usermanager, as discussed on the mailinglist. TODO: Refactor complete GUI of this dialog, nuke tabs and do both adding and editing users in one GUI. --- source/usermanager.dfm | 12 ++---------- source/usermanager.pas | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/source/usermanager.dfm b/source/usermanager.dfm index 24ebf2d9..63932a64 100644 --- a/source/usermanager.dfm +++ b/source/usermanager.dfm @@ -16,6 +16,7 @@ object UserManagerForm: TUserManagerForm OldCreateOrder = False Position = poMainFormCenter OnClose = FormClose + OnCreate = FormCreate OnShow = FormShow PixelsPerInch = 96 TextHeight = 13 @@ -166,16 +167,7 @@ object UserManagerForm: TUserManagerForm 'Select' 'Insert' 'Update' - 'Delete' - 'Index' - 'Alter' - 'Create' - 'Drop' - 'References' - 'Reload' - 'Shutdown' - 'Process' - 'File') + '...') TabOrder = 5 end object CheckBoxAllPrivileges: TCheckBox diff --git a/source/usermanager.pas b/source/usermanager.pas index 7f154385..edc4e04a 100644 --- a/source/usermanager.pas +++ b/source/usermanager.pas @@ -61,6 +61,7 @@ type Panel4: TPanel; ButtonEditUser: TButton; Button1: TButton; + procedure FormCreate(Sender: TObject); procedure DBUserTreeExpanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean); procedure FormShow(Sender: TObject); @@ -1018,4 +1019,28 @@ begin end; + +{** + Fetch names of privileges from mysql.users to use them in the checklistbox + on the "Add user" page. +} +procedure TUserManagerForm.FormCreate(Sender: TObject); +var + Privs: TDataset; + PrivName: String; +begin + Privs := getPrivColumns(PRIVTABLE_USERS); + // Add to listbox and cut off "_priv" suffixes + CheckListBoxPrivileges.Items.BeginUpdate; + CheckListBoxPrivileges.Items.Clear; + while not Privs.Eof do begin + PrivName := Privs.FieldByName('Field').AsString; + // Only add relevant columns + if Pos('_priv', PrivName) > 0 then + CheckListBoxPrivileges.Items.Add( Copy(PrivName, 1, Length(PrivName)-5) ); + Privs.Next; + end; + CheckListBoxPrivileges.Items.EndUpdate; +end; + end.