Jump to content
linosilva

Como criar "radiogroup" através de ficheiro Ini ?

Recommended Posts

linosilva

Boa noite

Estou a "tentar" alterar um programa já existente mas como não tive acesso a todos os sources, "encravei" na parte dos menus principais.

Vou colocar o link do desenho no qual está explicada a minha dúvida.

Não peço que me façam o "programa" mas sim que me ensinem como resolver o problema.

Lino Silva

http://img691.imageshack.us/img691/5215/gsmdesenho.jpg

Share this post


Link to post
Share on other sites
M6

Para manipulares o .ini não falta informação: http://goo.gl/nRGiB

Para criares os objectos, basta criá-los programaticamente. Não te esqueças de os eliminar sempre que não sejam mais necessários, caso contrário vais ter memory leaks.

Para actualizares sempre que o .ini é alterado, tens de fazer um hook ao ficheiro para receberes uma notificação do SO de que o ficheiro foi alterado. Outra hipótese, é verificares a cada x tempo se o ficheiro foi alterado e, em caso afirmativo, carregar a nova configuração.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
linosilva

Boa tarde

Desde já agradeço a resposta fornecida.

O meu problema não é ler nem escrever num simples ficheiro INI,  problema é quando o mesmo tem várias secções e dentro de cada secção tem várias linhas.

Quanto ao criar o Radiogoup não tive dificuldade utilizei o comando "LoadFromFile" que me cria bem o Radiogroup com os itens que escrever no ficeiro INI (altero os dados no ini e também aletra os botoes no radiogroup), mas esta opção não serve para o que eu quero porque iria obrigar a criar outros INI´s para manipular os outros Botões.

A minha dificuldade é ir  buscar os dados referentes a cada linha na 1ª e seguintes secções... ver o exemplo nos desenho que é mais fácil de entender.

Imagem 2 - o que já consigo fazer mas não serve os meus propositos

http://imageshack.us/photo/my-images/153/gsmdesenho2.jpg/

Imagem 3 - o que realmente necessito

http://imageshack.us/photo/my-images/580/gsmdesenho3.jpg/

Obrigado

LS2000

Share this post


Link to post
Share on other sites
M6

Mas tens tudo o que necessitas no .ini.

Na secção Index tem o valor Number que te diz quantos grupos tens de ler.

Basta cada grupo ter também um indicador desses para saberes quantas opções tens de ler.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
linosilva

Boas de novo

Como disse na minha apresentação, sou  "iniciante" nestas andanças. Considero-me um "autodidata" aprendo sozinho vendo como os outros fazem, analiso um pouco ali, um pouco acolá.

Consigo manipular com um certo á vontade os form´s e até um pouco os Units.

Bastava-me um exemplo de como ler os dados (figura 3) num dos exemplos do config.ini que depois de um pouco de estudo conseguiria fazer o que pretendo.

Acho que vai ter de usar um IF THEN ELSE.....

Por isso peço unicamente (estou mesmo cansado de tanto procurar e já não tenho 20 anos....) que me demonstrem por "exemplos" como faze-lo.

Não quero o "peixe" quero que me ensinem a pescar.....

brigado

Lino Silva

Share this post


Link to post
Share on other sites
M6

Num exemplo anterior indiquei como se manipulam os .ini.

A partir é fácil, lês o valor da variável "Number" e depois basta fazeres um ciclo for de 0 até esse número e em cada iteração constróis a string que queres ler (exemplo em pseudo-código):

  for i := 1 to Length(s) do
  begin
    nome = leValorIni('b' + toStr(i) + 'name');
    exe = leValorIni('b' + toStr(i) + 'exe');    
  end;


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
linosilva

Boas

Vou estudar um pouco a "lógica" do que enviaste (sei que vou "queimar mais uns neuronios"...mas).

1º - dedicar variaveis a todos os tipos de dados que vou precisar (strings acho eu)

2º - Arranjar maneira de ler os valores no INI e coloca-los nas mesmas.

Obrigado

LS2000

Share this post


Link to post
Share on other sites
M6

Para leres os valores do ficheiro .ini tens o TIniFile que já tem métodos para fazer isso, vê os links que enviei do Google, tem lá exemplos.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
linosilva

Boas

Mais uns passos dados..... já consigo ler o valor que quero no config.ini

vs1:=arq.ReadString('INDEX', 'number', '');

- defini a variavel "vs1" que recebeu o valor que esta colocado na secção [iNDEX] no campo number do respectivo config.ini

label3.caption := (vs1);

- aqui consigo colocar o valor da variavel "vs1" no label3.....

Pergunto (até deve ser muito fáçil... mas já estou cansado de procurar) como fazer o mesmo mas para um item do radiogroup??

Cumprimentos

Lino Silva

Share this post


Link to post
Share on other sites
M6

Para um item do radiogroup basta usar a mesma técnica.

Fazendo um ciclo for iniciando em zero lê-se a secção que tem como nome esse valor (da primeira vez será a secção [0], da segunda será a secção [1], etc.) e o parametro que se pretende ler.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
linosilva

Boas

A minha duvida não é ler e "conservar" as variaveis, o que eu quero neste momento é poder utilizar esses valores (variaveis) nos "caption" dos checbox do radiogroup.

Como por exemplo, num botom e num label já consigo renomear os caption do form com os seguinte comandos:

  Button4.caption := (vs3); em que vs3 vai buscar o valor no config.ini com o comando vs3:=arq.Readstring('exe', 'b1name', '');

  label2.caption := (vs4);em que vs4 vai buscar o valor no config.ini com o

comandovs4:=arq.Readstring('exe', 'b1exe','');

Ou seja já consigo ir buscar no config.ini os valores que desejo, bastava-me agora o comando para poder fazer o mesmo mas nos checkbox do radio group que quero criar.

Cumprimentos

Lino SIlva

Share this post


Link to post
Share on other sites
M6

linosilva, a técnica é precisamente a mesma.

Crias o objecto e atribuis-lhe os valores.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
linosilva

Boas

A minha dúvida é como criar o objecto e qual o comando...

Sou muito verde ainda nestas andanças, só para descobrir e entender o que acima referi queimei mais uns milhares de neurónios.....

Sei que se passar um Form em modo texto consigo ver como é  feito o Radrio group:

-----------------------------------------------------------

object RadioGroup1: TRadioGroup
    Left = 496
    Top = 48
    Width = 113
    Height = 177
    Caption = 'RadioGroup1'
    Items.Strings = (
      'Check 1'
      'Check 2')
    TabOrder = 4
    OnClick = RadioGroup1Click
  end

-----------------------------------------------------------

Será que posso colocar aqui a tal variavel?? ou teho de trabalhar no UNIT para poder alterar aqui o que eu quero ?? ou seja os valores no configini criarem os "check1,chek2,.....)??

Pouca falta para o que eu pretendo.......

Lino Silva

Share this post


Link to post
Share on other sites
M6

Tens de criar o objecto TRadioButton programáticamente.

Deixo-te aqui um link para um artigo que escrevi há muitos anos atrás sobre como fazer isso: http://www.delphi3000.com/articles/article_2896.asp?SK=


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
linosilva

Obrigado

Mais sarna para me coçar................... heehehheheheh

Está a ficar interessante.

Lino Silva

Share this post


Link to post
Share on other sites
nunopicado

Eu sei que este tópico já tem mais de 50.000 anos, 2 meses, 3 dias e 25 milésimas de segundo, mas estava aqui a ler e lembrei-me de escrever o seguinte:

- Tens o radiogroup criado (seja em DesignTime ou RunTime, como preferires)

(para criar o radiogroup em runtime):

var
   radGroup:TRadioGroup;  // variável global definida na zona de Interface

//...
//...
//...
     (* Criar o grupo *)
     radGroup:=TRadioGroup.Create(self);
     radGroup.Parent:=self;
     radGroup.Top:=50;
     radGroup.Left:=50;
     radGroup.Width:=120;
     radGroup.Height:=200;
     radGroup.Show;



//...
//...
//...
     radGroup.free; // quando deixar de ser necessário deve-se libertar a memória usada pelo grupo. Caso este seja necessário até final do programa, esta linha vai para o evento OnDestroy da form principal.

Para adicionar radiobuttons ao radiogroup, é muito simples. após ler a caption, insere-se no grupo da seguinte forma:

    for i:=1 to NumberOfRadioButtons do
        RadGroup.Items.Add(arq.Readstring('exe', 'b'+inttostr(i)+'exe','')); 

Sendo que NumberOfRadioButtons é o total de items da secção respectiva...

Basicamente, a propriedade Items (TStrings) é que guarda as captions de cada radiobutton dentro do radiogroup!

   


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.