fil
Members-
Posts
9 -
Joined
-
Last visited
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
fil's Achievements
Newbie (1/4)
0
Reputation
-
Why is a globally declared variable in the Main Form publicly available for all sessions? I am declaring a variable in the main form. And this variable is publicly available for all sessions. It is not right. how to avoid this? I need a separate variable for each session.
-
clarification, I get an error when I try to start more than one session.
-
Hi, Unigui installation includes ShowProgress demo But this demo does not work for me in the following code. When using the UniSession.Synchronize function. function TMainForm.CreateFields():boolean; var i,perRecords:integer; perIBQuery,perIBQuery2:TIBQuery; begin //получаем список всех описаний спейсов UniMainModule.IBDatabase.Connected:=true; perIBQuery:=UniMainModule.MyInitializationTIBQerySelect(perIBQuery); perIBQuery.Active:=false; perIBQuery.SQL.Clear; perIBQuery.SQL.Add('select DESCRIPTION from SPACES group by DESCRIPTION' ); perIBQuery.Active:=true; perIBQuery2:=UniMainModule.MyInitializationTIBQerySelect(perIBQuery); perIBQuery.Last; //очищаем массив и выставляемя размер массива согласно размеру sql запросу SetLength(ParamString,0); SetLength(ParamString,perIBQuery.RecordCount); perIBQuery.first; ShowProgress('Please Wait...'); //запускаем прогрессбар UniSession.Synchronize; perRecords:=perIBQuery.RecordCount-1 ; for i:=0 to perRecords do begin UpdateProgress(i/perRecords, Format('%%%d Completed', [round(100/perRecords*i)])); UniSession.Synchronize; //создаем панельку в которой будем размещать кнопки и ParamString[i].Panel:=TUniPanel.Create(MainForm); ParamString[i].Panel.Parent:= MainForm; ParamString[i].Panel.Left:=10; ParamString[i].Panel.Top:=i*30+30; ParamString[i].Panel.Width:=650; ParamString[i].Panel.Height:=25; ParamString[i].Panel.Name:='panel'+inttostr(i); ParamString[i].Panel.Visible:=false; //скрываем чтобы быстрее грузилось //создаем название спейса ParamString[i].LabelNameSpace:=TUniLabel.Create(ParamString[i].Panel); ParamString[i].LabelNameSpace.Parent:= ParamString[i].Panel; ParamString[i].LabelNameSpace.Left:=5; ParamString[i].LabelNameSpace.Top:=5; ParamString[i].LabelNameSpace.Width:=75; ParamString[i].LabelNameSpace.Height:=25; ParamString[i].LabelNameSpace.Caption:=TRIM(perIBQuery.fieldbyname('DESCRIPTION').asstring); ParamString[i].LabelNameSpace.Name:='Label'+inttostr(i); //выбираем все группы для спейса perIBQuery2.Active:=false; perIBQuery2.SQL.Clear; perIBQuery2.SQL.Add( 'select '+ ' spaces.id, '+ ' spaces.description, '+ ' spaces.name_, '+ ' laws.id_users, '+ ' laws1.id_users admins '+ 'from laws ' + ' right outer join spaces on (laws.id_spaces = spaces.id and laws.id_users = '+inttostr(gperIDuser)+') '+ ' left outer join laws laws1 on (spaces.id = laws1.id_spaces and laws1.id_users = '+inttostr(gperIDcurentuser)+') '+ 'where '+ ' ( '+ ' (description =' +''''+TRIM(perIBQuery.fieldbyname('DESCRIPTION').asstring)+''''+') '+ ' ) ' ); perIBQuery2.Active:=true; perIBQuery2.first; //тут рисуем кнопку none ParamString[i].RadioButton4:=TUniRadioButton.Create(ParamString[i].Panel); ParamString[i].RadioButton4.Parent:= ParamString[i].Panel; ParamString[i].RadioButton4.Left:=600; ParamString[i].RadioButton4.Top:=2; ParamString[i].RadioButton4.Width:=75; ParamString[i].RadioButton4.Height:=25; ParamString[i].RadioButton4.Caption:='None'; ParamString[i].RadioButton4.Name:='RadioButton4_'+inttostr(i); ParamString[i].RadioButton4.Checked:=true; ParamString[i].CheckedID:=-1; while not perIBQuery2.Eof do begin if pos('Admin',perIBQuery2.fieldbyname('NAME_').asstring)>0 then begin ParamString[i].RadioButton1:=TUniRadioButton.Create(ParamString[i].Panel); ParamString[i].RadioButton1.Parent:= ParamString[i].Panel; ParamString[i].RadioButton1.Left:=390; ParamString[i].RadioButton1.Top:=2; ParamString[i].RadioButton1.Width:=60; ParamString[i].RadioButton1.Height:=25; ParamString[i].RadioButton1.Caption:='Admin'; ParamString[i].ID1:=perIBQuery2.fieldbyname('ID').AsInteger; //ЗАПИСЫВАЕМ ID СПЕЙСА КОТОРЕ ПОД ЭТОЙ КНОПКОЙ ParamString[i].RadioButton1.Name:=TRIM(perIBQuery2.fieldbyname('NAME_').asstring); if perIBQuery2.fieldbyname('id_users').AsInteger>0 then begin ParamString[i].RadioButton1.Checked:=true; //выставляем крыжик на правах админа если он админ ParamString[i].CheckedID:=1; //выставляем что админ был end; if (gperIDuser<>gperIDcurentuser)and(gperIDcurentuser<>0) then //если залогиненый пользователь не совпадает с выбранным пользователем и не равен глобальному админу то begin if perIBQuery2.fieldbyname('admins').AsInteger>0 then ParamString[i].Panel.Enabled:=true else ParamString[i].Panel.Enabled:=false; //если это админ спейса делаем возможность выбора, если нет то нет end; end else if (pos('Read',perIBQuery2.fieldbyname('NAME_').asstring)>0)and(pos('ReadWrite',perIBQuery2.fieldbyname('NAME_').asstring)=0) then begin ParamString[i].RadioButton2:=TUniRadioButton.Create(ParamString[i].Panel); ParamString[i].RadioButton2.Parent:= ParamString[i].Panel; ParamString[i].RadioButton2.Left:=450; ParamString[i].RadioButton2.Top:=2; ParamString[i].RadioButton2.Width:=75; ParamString[i].RadioButton2.Height:=25; ParamString[i].RadioButton2.Caption:='Read'; ParamString[i].ID2:=perIBQuery2.fieldbyname('ID').AsInteger; //ЗАПИСЫВАЕМ ID СПЕЙСА КОТОРЕ ПОД ЭТОЙ КНОПКОЙ ParamString[i].RadioButton2.Name:=trim(perIBQuery2.fieldbyname('NAME_').asstring); if perIBQuery2.fieldbyname('id_users').AsInteger>0 then begin ParamString[i].RadioButton2.Checked:=true; ParamString[i].CheckedID:=2; //выставляем что чтение end; end else if pos('ReadWrite',perIBQuery2.fieldbyname('NAME_').asstring)>0 then begin ParamString[i].RadioButton3:=TUniRadioButton.Create(ParamString[i].Panel); ParamString[i].RadioButton3.Parent:= ParamString[i].Panel; ParamString[i].RadioButton3.Left:=510; ParamString[i].RadioButton3.Top:=2; ParamString[i].RadioButton3.Width:=75; ParamString[i].RadioButton3.Height:=25; ParamString[i].RadioButton3.Caption:='ReadWrite'; ParamString[i].ID3:=perIBQuery2.fieldbyname('ID').AsInteger; //ЗАПИСЫВАЕМ ID СПЕЙСА КОТОРЕ ПОД ЭТОЙ КНОПКОЙ ParamString[i].RadioButton3.Name:=trim(perIBQuery2.fieldbyname('NAME_').asstring); if perIBQuery2.fieldbyname('id_users').AsInteger>0 then begin ParamString[i].RadioButton3.Checked:=true; ParamString[i].CheckedID:=3; //выставляем что чтение и запись end; end; perIBQuery2.Next; end; perIBQuery.next; end; HideProgress; //скрываем прогрессбар //ShowToast('Process Finished'); for i:=0 to Length(ParamString)-1 do begin ParamString[i].Panel.Visible:=true; end; perIBQuery.Free; perIBQuery2.Free; end; I get the error --------------------------- Debugger Exception Notification --------------------------- Project Project1.exe raised exception class Exception with message 'Fatal Error: Control can not be created with a nil Owner.'. --------------------------- Break Continue Help --------------------------- Without UniSession.Synchronize; I get no errors. what is the problem? More precisely, how to make a progress bar in real time when the list is loaded.
-
had to add a name to the Panel object ParamString.Panel.Name:='panel'+inttostr(i);
-
Looked at demos, unfortunately there are no examples with RadioButtons I need to group the RadioButtons but unfortunately: They are created but they all have one choice type TParamString=record LabelNameSpace:TUniLabel; RadioButton1:TUniRadioButton; RadioButton2:TUniRadioButton; RadioButton3:TUniRadioButton; Panel:TUniPanel; end; for i:=1 to 10 do begin ParamString[i].Panel:=TUniPanel.Create(MainForm); ParamString[i].Panel.Parent:= MainForm; ParamString[i].Panel.Left:=10; ParamString[i].Panel.Top:=i*50; ParamString[i].Panel.Width:=200; ParamString[i].Panel.Height:=45; ParamString[i].LabelNameSpace:=TUniLabel.Create(ParamString[i].Panel); ParamString[i].LabelNameSpace.Parent:= ParamString[i].Panel; ParamString[i].LabelNameSpace.Left:=5; ParamString[i].LabelNameSpace.Top:=5; ParamString[i].LabelNameSpace.Width:=75; ParamString[i].LabelNameSpace.Height:=25; ParamString[i].LabelNameSpace.Caption:='TEST'; ParamString[i].RadioButton1:=TUniRadioButton.Create(ParamString[i].Panel); ParamString[i].RadioButton1.Parent:= ParamString[i].Panel; ParamString[i].RadioButton1.Left:=50; ParamString[i].RadioButton1.Top:=5; ParamString[i].RadioButton1.Width:=75; ParamString[i].RadioButton1.Height:=25; ParamString[i].RadioButton1.Caption:='TEST'; ParamString[i].RadioButton2:=TUniRadioButton.Create(ParamString[i].Panel); ParamString[i].RadioButton2.Parent:= ParamString[i].Panel; ParamString[i].RadioButton2.Left:=100; ParamString[i].RadioButton2.Top:=5; ParamString[i].RadioButton2.Width:=75; ParamString[i].RadioButton2.Height:=25; ParamString[i].RadioButton2.Caption:='TEST'; end;
-
I understood. child cannot be created
-
Hello, I try to create objects by dynamic. But when I create the child object I get an error. My code: type TParamString=record LabelNameSpace:TUniLabel; RadioGroup:TUniRadioGroup; RadioButton:TUniRadioButton; end; ... var ParamString:array of TParamString; ... SetLength(ParamString,0); SetLength(ParamString,10); for i:=1 to 10 do begin ParamString[i].RadioGroup:=TUniRadioGroup.Create(MainForm); ParamString[i].RadioGroup.Parent:= MainForm; ParamString[i].RadioGroup.Left:=10; ParamString[i].RadioGroup.Top:=i*50; ParamString[i].RadioGroup.Width:=200; ParamString[i].RadioGroup.Height:=45; ParamString[i].LabelNameSpace:=TUniLabel.Create(ParamString[i].RadioGroup); ParamString[i].LabelNameSpace.Parent:= ParamString[i].RadioGroup; ParamString[i].LabelNameSpace.Left:=10; ParamString[i].LabelNameSpace.Top:=5; ParamString[i].LabelNameSpace.Width:=75; ParamString[i].LabelNameSpace.Height:=25; ParamString[i].LabelNameSpace.Caption:=inttostr(i); end; How to correct create the child objects? Thanks