Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 202
  • Last Modified:

Loading RadioButtons value to a String Grid.

I have, on one form, a RadioGroup component, where depending on what entries your Registry has, will add a RadioButton for each one entries along with the captions. Here is the code for that:

procedure TSLESelectionForm.FormShow(Sender: TObject);
var
Registry: TRegistry;
Temp1, Temp2, Temp3, Temp4 : String;
begin
 Registry := TRegistry.Create;
 Registry.RootKey:=HKEY_LOCAL_MACHINE;
 Registry.OpenKey('\Software\Tester', False);
 Temp1 := Registry.ReadString('Location1');
 If Temp1 > '' then rbSLELocation.Items.Add(Registry.ReadString('Location1'));
 Temp2 := Registry.ReadString('Location2');
 If Temp2 > '' then rbSLELocation.Items.Add(Registry.ReadString('Location2'));
 Temp3 := Registry.ReadString('Location3');
 If Temp3 > '' then rbSLELocation.Items.Add(Registry.ReadString('Location3'));
 Temp4 := Registry.ReadString('Location4');
 If Temp4 > '' then rbSLELocation.Items.Add(Registry.ReadString('Location4'));
 Registry.CloseKey;
 Registry.Free;
end;

And this seems to work fine.

On another form, Mainform, is a stringgrid, that during SelectedCell, called the above form.

I need to pass which RadioButton on the above form was selected and put that text value in that area of the string grid, that first loaded that form, as the SLESelectionForm closes. I'm not sure how to even start this.
0
JPersinger
Asked:
JPersinger
1 Solution
 
Alisher_NCommented:
??
check rbSLELocation.ItemIndex - it is index of selected button, and
rbSLELocation.Items[ rbSLELocation.ItemIndex ] is string you need...
just assign it to your cell in strnggrid..
0
 
intheCommented:
Hi
this is probably the long way but
i added 2 more strings in registry ,called them row and col
then done like:


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids,Registry;

type
  TmainForm = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  mainForm: TmainForm;


implementation

uses Unit2;

{$R *.DFM}

procedure TmainForm.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var
r : tregistry;
  begin
 R := TRegistry.Create;
 R.RootKey:=HKEY_LOCAL_MACHINE;
 R.OpenKey('\Software\Tester', False);
 R.WriteInteger('Row',Arow);
 R.WriteInteger('Col',Acol);
SLESelectionForm.ShowModal;
end;

end.



unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,registry,
  StdCtrls, ExtCtrls;

type
  TSLESelectionForm = class(TForm)
    rbSLELocation: TRadioGroup;
    procedure FormCreate(Sender: TObject);
    procedure rbSLELocationClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  SLESelectionForm: TSLESelectionForm;
   a,b : integer;
implementation

uses Unit1;

{$R *.DFM}

procedure TSLESelectionForm.FormCreate(Sender: TObject);
var
Registry: TRegistry;
Temp1, Temp2, Temp3, Temp4 : String;
begin
 Registry := TRegistry.Create;
 Registry.RootKey:=HKEY_LOCAL_MACHINE;
 Registry.OpenKey('\Software\Tester', False);
 Temp1 := Registry.ReadString('Location1');
 If Temp1 > '' then rbSLELocation.Items.Add(Registry.ReadString('Location1'));
 Temp2 := Registry.ReadString('Location2');
 If Temp2 > '' then rbSLELocation.Items.Add(Registry.ReadString('Location2'));
 Temp3 := Registry.ReadString('Location3');
 If Temp3 > '' then rbSLELocation.Items.Add(Registry.ReadString('Location3'));
 Temp4 := Registry.ReadString('Location4');
 If Temp4 > '' then rbSLELocation.Items.Add(Registry.ReadString('Location4'));
 Registry.CloseKey;
 Registry.Free;
end;

procedure TSLESelectionForm.rbSLELocationClick(Sender: TObject);
var
r : tregistry;
i : integer;
  begin
 R := TRegistry.Create;
 R.RootKey:=HKEY_LOCAL_MACHINE;
 R.OpenKey('\Software\Tester', False);
 a := r.ReadInteger('Row');
 b := r.ReadInteger('Col');
 i := rbSLELocation.ItemIndex;
 mainform.StringGrid1.Cells[b,a] := rbSLELocation.Items.Strings[i];
 SLESelectionForm.Close;
end;

end.
0
 
Alisher_NCommented:
why add extra junk to registry ???
the same can be done via couple of extra VARs inside a programm...
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
intheCommented:
i know i was just there ..
   (in the registry i mean ;-)
0
 
rwilson032697Commented:
I think Alisher has it...
0
 
JPersingerAuthor Commented:
I agree with rwilson. Alisher N thanks.
0
 
Alisher_NCommented:
welcome everybody ;-))
(just want that T-shirt, you know ;-))
0

Featured Post

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now