• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 210
  • 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
2018 Annual Membership Survey

Here at Experts Exchange, we strive to give members the best experience. Help us improve the site by taking this survey today! (Bonus: Be entered to win a great tech prize for participating!)

 
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

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

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