
robinhocne
Membros-
Total de itens
854 -
Registro em
-
Última visita
Tudo que robinhocne postou
-
Problemas com TEdit( FindComponent....
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
Amigo..Na leitura do registro ( tem mais de uma campo que será atribuido ) ? A cada incremento do ContaM ... realmente corresponde ao indice do componente que quer usar ? Observe a sequencia dos registros na tabela... será a mesma que voce terá que usar para jogar os conteudos nos edits abraço bom fiz um exemplo para você ver e compreender: PROGRAMAEXEMPLO Primeiro você abre o datamodule (FdtmIza) e conecta no caminho certo do banco de dados pelo (dbaIza) o banco de dados está dentro da pasta teste mesmo (IzaCfc), a ordem do programa tem que ser essa então tem que seguila certa... eu utilizo o delphi 7 e firebird 2.0 como banco vai pedir dois componentes e está dentro da pasta teste um é o psvborderlabels, que são os labels dos horarios, e outro provalvemente você tem que é o Rxlib, mas tem ai tbém, se pedir outro componente, pode tirar ele da (Uses) pois tirei todos. Fico aguardando respota.! -
Problemas com TEdit( FindComponent....
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
voce está fazendo um loop em cima do banco de dados e não em cima dos componentes... a pesquisa com FindComponent é realizada em cima de todos os componentes que compõem o form ( inclusive ele proprio ) OBS: supondo que os seus edits já estejam nomeados Alu1 ... Alu2 .... Alu3 ... etc para procura-los voce em que fazer uma pesquisa usando o comando FOR procedure TForm1.Button1Click(Sender: TObject); var ContaM : integer; begin for ContaM := 0 to ComponentCount -1 do TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := '**********'; end; Tente entender a lógica do processo e aplica-lo ao seu código abraço voce está fazendo um loop em cima do banco de dados e não em cima dos componentes... a pesquisa com FindComponent é realizada em cima de todos os componentes que compõem o form ( inclusive ele proprio ) OBS: supondo que os seus edits já estejam nomeados Alu1 ... Alu2 .... Alu3 ... etc para procura-los voce em que fazer uma pesquisa usando o comando FOR procedure TForm1.Button1Click(Sender: TObject); var ContaM : integer; begin for ContaM := 0 to ComponentCount -1 do TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := '**********'; end; Tente entender a lógica do processo e aplica-lo ao seu código abraço Caraca, era isso mesmo, troquei o nil por self e funcionou mais ou menos certo... mostra ai ele mostrou nos texts dos esdits, mas só está mostrando. ficou assim: procedure TFrmTeoricas.FormCreate(Sender: TObject); var soma, a : Integer; Alunos : Integer; begin with QryAlunos do begin close; sql.clear; sql.add('select * from Configuracao'); open; end; Alunos := QryAlunos.FieldByName('TOT_ALU_TEORICAS').AsInteger; TxtData.Date := date (); A := 0; // Criando total de alunos for CA :=1 to 16 do for CAC := 1 to Alunos do // criando colunas begin A := A + 1; soma := A; CodAlu := TEdit.Create(Self); with CodAlu do begin Name := 'Alu'+ IntToStr(soma); Tag := ca; Left := 5+(CAC*82); Height := 20; Width := 55; AutoSize := false; Font.Size := 8; Text := ''; top := -19+(CA*20); Parent := Grade; Cursor := crCross; OnDblClick := MarcaAulas; OnMouseMove:= MudarCursor; OnKeyDown := BloqueioDesbloqueio; end; end; A := 0; // Criando totais de materias for MA :=1 to 16 do for MAC := 1 to Alunos do // criando colunas de materias begin A := A + 1; soma := A; Materias := TEdit.Create(Self); with Materias do begin Name := 'Mat'+ IntToStr(soma);; Left := 60+(MAC*82); Height := 20; Width := 24; AutoSize := false; Font.Size := 8; Text := ''; top := -19+(MA*20); Parent := Grade; Cursor := crCross; OnMouseMove:= MudarCursor; end; end; end; e ai no procedimento de consulta agendamento: ficou da mesma maneira: procedure TFrmTeoricas.ConsultaAgendamento; begin ContaM := 1; With DtmIza.QryIza do begin close; sql.Clear; sql.Add('Select * From Teoricas where Instrutor = :Inst and Data = :Dat'); ParamByName('Inst').AsString := txtcodins.Text; ParamByName('Dat').AsDate := txtData.date; open; end; while ( not dtmIza.qryiza.EOF ) do begin if DtmIza.QryIza.FieldByName('Bloqueado').AsString = 'S' then begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := '**********'; end else begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := StrZero (DtmIza.QryIza.FieldByName('Aluno').AsInteger, 6); TEdit( FindComponent( 'Mat' + IntToStr( ContaM ) ) ).Text := DtmIza.QryIza.FieldByName('Sigla').asstring; end; {else begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := ''; end; } contaM:=contaM+1; dtmIza.qryiza.Next; end; end; Mas agora ele só não está mostrando, tipo assim se eu marquei os horarios de 08:00, 09:00, 11:00 etc, ai nos edits ele mostra tudo na fileira das 08:00 hs mas tá assim os Edits são criados comecando um na frente do outro então ele cria no horario das: 08:00 hs Alu1, Alu2, Alu3, Alu4, Alu5, Alu6, Alu7....Alu10 depois ele pula para a linha de baixo que é o horario das: 09:00 hs Alu11, Alu12, Alu13, Alu14, Alu15, Alu16, Alu17....Alu20 e ele vai criando dependendo de (x) edtis que o usuario vai querer que crie um na frente do outro e sempre vai ser 16 edits um em baixo do outro tipo assim: 1 - 08:00 Alu1, Alu2, Alu3, Alu4, Alu5, Alu6, Alu7....Alu10 2 - 09:00 Alu11, Alu12, Alu13, Alu14, Alu15, Alu16, Alu17....alu10 3 - 10:00 Alu21, Alu22, Alu23, Alu24, Alu25, Alu26, Alu27....alu20 4 - 11:00 Alu31, Alu32, Alu33, Alu34, Alu35, Alu36, Alu37....alu30 ... 16 - 23:00 Alu171, Alu172, alu173 Alu174, Alu175, Alu176, Alu177....alu180 ai na consulta para mostrar os agendamento, está assim contando ContaM := 1; With DtmIza.QryIza do begin close; sql.Clear; sql.Add('Select * From Teoricas where Instrutor = :Inst and Data = :Dat'); ParamByName('Inst').AsString := txtcodins.Text; ParamByName('Dat').AsDate := txtData.date; open; end; while ( not dtmIza.qryiza.EOF ) do begin if DtmIza.QryIza.FieldByName('Bloqueado').AsString = 'S' then begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := '**********'; end else begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := StrZero (DtmIza.QryIza.FieldByName('Aluno').AsInteger, 6); TEdit( FindComponent( 'Mat' + IntToStr( ContaM ) ) ).Text := DtmIza.QryIza.FieldByName('Sigla').asstring; end; {else begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := ''; end; } contaM:=contaM+1; dtmIza.qryiza.Next; end; como ele cria um atras do outro e depois vai pulando em fileira ele mostra tudo bagunçado tipo se os horairos estão marcados 08:00, 10:00 ele só mostra na primeira por causa da contagem dos nomes dos edits. e agora como dá para deixar essa primeira fileira como das 08:00 a segunda das 09:00 mas sabendo que o total de fileiras é (x) ? -
Estou montando um formulario que eu marco as aulas e ai na consulta eu mostro em cada coluna quais os alunos que estão marcados nos horarios, mas o que acontece que pelo que eu já fiz tá certo mas ele não me mostra nada, mas o problema está no procedimento consultagendamento. e esse é o meu problema que não está dando certo: aqui eu consulto na tabela teoricas quais alunos estão marcados nos horarios, mas ele não me retorna nada. procedure TFrmTeoricas.ConsultaAgendamento; var ContaM : Integer; begin ContaM := 1; With DtmIza.QryIza do begin close; sql.Clear; sql.Add('Select * From Teoricas where Instrutor = :Inst and Data = :Dat'); ParamByName('Inst').AsString := txtcodins.Text; ParamByName('Dat').AsDate := txtData.date; open; end; while ( not dtmIza.qryiza.EOF ) do begin if DtmIza.QryIza.FieldByName('Bloqueado').AsString = 'S' then begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := '**********'; end else begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := DtmIza.QryIza.FieldByName('Aluno').asstring; TEdit( FindComponent( 'Mat' + IntToStr( ContaM ) ) ).Text := DtmIza.QryIza.FieldByName('Materia').asstring; end; {else begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := ''; end; } contaM:=contaM+1; dtmIza.qryiza.Next; end; end; pois como eu faço um loop ai ele tem que pular no Alu1(alu2, alu3, alu4.....).text e mostrar o aluno que está marcado, mas não mostra nada, fiz um debug e ai ele me mostra sim, mas na hora da execução não mostra nada. mas o problema está sendo nesse parte aqui....: alguém poderia me ajudar ???
-
Ok Resolvido if Trim(TEdit(Sender).Text) = '' then TEdit(Sender).Cursor := crCross else TEdit(Sender).Cursor := crNo;
-
voce passar mais tempo nisso se não entender o que esta fazendo.... Cursor := crCross; Parent := sbxPra; Top := top_edit; Left := left_edit; Name := 'ed_' + IntToStr( a ) + FormatDateTime( 'hhnn', HoraAtual ); Width := 65; //Enabled := False; ReadOnly := True; Text := ''; --------------------------------------> ate aqui voce trabalhou com properiedades do componente ( sem erros ) OnDblClick := PreencheEdit; OnKeyDown := BloqueioDesbloqueio; OnMouseMove := MudarCursor; --------------------------------------> aqui são eventos do componete, que antes de atribuir a eles uma procedure, voce tem que criar estes eventos (Access violation at address 00428690 in module 'sistemacfc.exe'. Read of address 0000010 ) agora estou sem tempo para te explicar... quem sabe outro colega o ajude abraço OnDblClick := PreencheEdit; OnKeyDown := BloqueioDesbloqueio; Mas esses dois evento aqui nessa mesma posição ele funciona normalmente....sem problemas!
-
mas tenho certeza que está errada: Amigo... Vou te dar uma ajuda...mas voce precisa estudar mais logica de programação e sintaxe dos comandos do delphi procedure vermouse; var i : Integer; begin for i := 0 to Form1.ComponentCount -1 do begin if Form1.Components[i] is TEdit then begin if TEdit(Form1.Components[i]).Text = '' then begin if Form1.Components[i] is TEdit then TEdit(Form1.Components[i]).Cursor := crHandPoint; end else begin if Form1.Components[i] is TEdit then TEdit(Form1.Components[i]).Cursor := crMultiDrag; end; end; end; end; procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin vermouse; end; procedure TForm1.Edit2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin vermouse; end; procedure TForm1.Edit3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin vermouse; end; OBS: Ao passar com o cursor nos edits que estiverem no formulario, ele fara uma verificação... se houver algum conteudo no edit ele mostrara um tipo de cursor ... caso contrario mostrara outro tipo. abraço ficou dessa maneira: procedure Tfrmpraticas.MudarCursor; var i : Integer; begin for i := 0 to frmpraticas.ComponentCount -1 do begin if frmpraticas.Components[i] is TEdit then begin if TEdit(frmpraticas.Components[i]).Text = '' then begin if frmpraticas.Components[i] is TEdit then TEdit(frmpraticas.Components[i]).Cursor := crHandPoint; end else begin if frmpraticas.Components[i] is TEdit then TEdit(frmpraticas.Components[i]).Cursor := crMultiDrag; end; end; end; end; Ai eu coloque no Evento do Mouse, mas.... os edits é criado em tempo de execucao: for a := 1 to 7 do begin // cria o edit do codigo do aluno edits := TEdit.Create( Self ); with edits do begin Cursor := crCross; Parent := sbxPra; Top := top_edit; Left := left_edit; Name := 'ed_' + IntToStr( a ) + FormatDateTime( 'hhnn', HoraAtual ); Width := 65; //Enabled := False; ReadOnly := True; Text := ''; OnDblClick := PreencheEdit; OnKeyDown := BloqueioDesbloqueio; OnMouseMove := MudarCursor; <<<<<<<<<<Procedure MudarCursor with Font do Begin Height := 15; Name := 'Courier New'; Size := 10; // Style := [fsBold]; end; end; end; Ai quando eu rodo ele e passo o mouse em cima ele dá esse erro: e agora o que estou fazendo de errado, passei o fim de semana inteiro nisso e nada.?
-
Tenta dessa maneira: OBS: não tenho estes cursores, poranto usei os que acompanham o delphi procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin If Edit1.Text <> '' then begin Edit1.cursor := crHandPoint; end else begin Edit1.cursor := crMultiDrag; end; end; abraço Ok, deu certo colocando assim, mas eu queria colocar esse procedimento no meu formulario que monto os edits em tempo de execução, e ai eu fiz, mas tenho certeza que está errada: procedure Tfrmpraticas.MudarCursor(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Conta : Integer; begin If TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).Text <> '' then begin TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).Cursor := crHandPoint; end else begin TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).cursor := crMultiDrag; end; end; Como ficaria isso com os componentes em tempo de execução
-
Estou montando uma tabela em tempo de execução: procedure TFrmTeoricas.FormCreate(Sender: TObject); begin // Criando total de alunos for CA :=1 to 15 do for CAC := 1 to 50 do // criando colunas begin CodAlu := TEdit.Create(nil); CodAlu.Name := 'Alu'; CodAlu.Left := -4+(CAC*92); CodAlu.Height := 25; CodAlu.Width := 60; CodAlu.AutoSize := false; CodAlu.Font.Size := 10; CodAlu.Text := ''; CodAlu.top := -25+(CA*26); CodAlu.Parent := Grade; CodAlu.Cursor := crCross; end; // Criando totais de materias for MA :=1 to 15 do for MAC := 1 to 50 do // criando colunas de materias begin Materias := TEdit.Create(nil); Materias.Name := 'Mat'; Materias.Left := 58+(MAC*92); Materias.Height := 25; Materias.Width := 25; Materias.AutoSize := false; Materias.Font.Size := 10; Materias.Text := ''; Materias.top := -25+(MA*26); Materias.Parent := Grade; end; end; e eu tenho que consultar de cada coluna e linha de edit quais alunos estão marcados: procedure TFrmTeoricas.ConsultaAgendamento; begin ContaM := 1; With DtmIza.QryIza do begin close; sql.Clear; sql.Add('Select * From Teoricas where Instrutor = :Inst and Data = :Dat'); ParamByName('Inst').AsString := txtcodins.Text; ParamByName('Dat').AsDate := txtData.date; open; end; while ( not dtmIza.qryiza.EOF ) do begin if DtmIza.QryIza.FieldByName('Bloqueado').AsString = 'S' then begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := '**********'; end else begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := DtmIza.QryIza.FieldByName('Aluno').asstring; TEdit( FindComponent( 'Mat' + IntToStr( ContaM ) ) ).Text := DtmIza.QryIza.FieldByName('Materia').asstring; end; {else begin TEdit( FindComponent( 'Alu' + IntToStr( ContaM ) ) ).Text := ''; end; } contaM:=contaM+1; dtmIza.qryiza.Next; end; end; Mas não está mostrando nada, pois fiz isso com os edits criados e deu certo mas criando em tempo de execução não aparece nada e tem que ser em tempo de execuçao todo essa construção da tabela O que eu estou fazendo de errado ?
-
Olá pessoal. Como eu faço para que quando eu passar o mouse em cima do edit e quando ele estiver preenchido o cursor do mouse fica de um tipo e quando não tiver nada no edit ele fica com outro tipo de cursor? Tipo acho que estou montando certo : If Edit1.Text <> ' ' then begin cursor := 3dgmove; end else begin cursor := 3dgarro; end; Mas tipo, teria que ser na hora que for passar o mouse em cima do edit!
-
mas você quer direto desses edits ou isso é guardado em algum banco de dados ?
-
(Resolvido) Colocar barra de rolagem no panel?
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
isso mesmo certinho, valeu Churc! - Resolvido -
Como eu coloco um bara de rolagem para funcionar no panel ou se tem outra maneira de colocar em algo, pois é assim eu tenho um form em que eu marco alguns agendamentos de aulas Teóricas e ai, se eu for fazer o meu form do tamanho que tem o total de alunos, vai precisar de uma televisao de plasma para mexer nessa janela...(rsrsrs),. então eu estou fazendo em tempo de execução para aparecer o total de colunas de acordo com o total de alunos e o total de linhas de acordo com os intervalos de horarios, pois ai eu queria ver para colocar um barra de rolagem na vertical do lado direito e outra na final do panel!
-
Criptografar Banco de dados Firebird
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
1 - Se o BD está em um servidor, use a politica de segurança do servidor, sem a senha de acesso ao servidor, niguem tira uma copia do seu BD. 2 - Se o BD esta em uma maquina em outras pessoas tem acesso, voce poderia criptografar os registros das tabelas, e neste caso voce teria " Segurança X Performance ". Ou seja ... mais segurança menos performance. Existem alguns componentes para isto. 3 - Deixar invisivel o BD em uma pasta criada por voce em um caminho especifico ( não aparece para usuario nenhum e nem pesquisar econtra ), que seria acessada apenas atraves do seu programa .... li alguma coisa a respeito a muito tempo atraz na internet, mas nem me lembro mais onde. abraço Sim ele está em um servidor, mais ele é frequetemente usado. Ai é uma opção complicada, mas acho que o principal de um programa é a Peformance, mas com uma boa segunraça. Acho que seria uma opção para ser estudado. Mas será que não tem como fazer algo no banco para que antes de abrilo pelo ibexpert ou outro qualquer programa que possa abrilo ele verificar pedindo senha, ou algo assim. -
(Resolvido) Como editar arquivo texto e verificar se está ok
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
Ok, com o memo deu certo!. -
(Resolvido) Buscar Sempre a primeira data da semana ...
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
Se no evento Oncreate do form você colocar minhadata := date - dayofweek(date)+1; Não resolve seu problema? Isso mesmo, deu certo. valeu Denis Courcy -
(Resolvido) Buscar Sempre a primeira data da semana ...
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
Não entedi muito bem isso, mas o componente MonthCalendar1 da paleta WIN32 o default é domingo e pode ser alterado pela propriedade FirstDayOfWeek. abraço tipo assim quando abro o formulario por pesquisa de data eu busca a data do dia corrente, então queria ver em vez de eu buscar do dia atual ele buscaria do primeiro dia da semana (domingo) -
Bom eu queria ver se alguém tem ou sabe alguma função que quando eu abro a janela de busca ele sempre rmostrar no campo da data o primeiro dia (O Domingo) e mostra as demais pois eu busco sempre por domingo e gostaria de que isso fosse automatico.
-
Venho através desse tópico verificar com vocês, sobre criptografar o banco de Dados FB ou colocar senha nele, pois andei pesquisando e tem como mudar a sneha do fb daquele pc, pois se instalar em outro e ai passar o banco ele mostra normal com a senha ('SYSYDBA') e ('masterkey'). então eu queria ver sobre a segurança do meu banco de dados e principal o cliente, como eu deveria protege-lo melhor.
-
(Resolvido) Mostrar dados no Dbgrid dependendo do Tipo de pg
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
acho que não será possivel, pois ao compilar o programa voce terá este erro: Cannot assign to a read-only property melhor é criar outro campo .. pode ser até tabalhoso para voce agora, mas vai simplificar muito depois abraço Ok, Jhonas mas acabei mesmo mudando todos ele para char e gravando com letras inicias, pois é bem melhor mesmo, pois até para mudar nos meus clientes eu fiz um programa auxiliar para checar os numeros e criar outro campo e substituir pela letra e apaguei o campo normal tipo em numerico. pode fechar esse tópico. -
(Resolvido) Mostrar dados no Dbgrid dependendo do Tipo de pg
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
Sim, já até pensei, mas esse programa meu já está rodando em 4 clientes e teria muita coisa para mudar, e por isso que queria ver aqui se tem como, só para na hora que vizualiza os dados no Dbgrid -
(Resolvido) Mostrar dados no Dbgrid dependendo do Tipo de pg
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
Sim Jhonas isso eu sei, fiz uma instruçao dentro de um procedimento e quando eu abro a janela já executo esse procedimento que faz o select no onshow. -
(Resolvido) Mostrar dados no Dbgrid dependendo do Tipo de pg
uma questão postou robinhocne Delphi, Kylix
Bom estou fazendo assim para que quando o meu pagamento tiver o tipo 1 para entrada, 0 para saida .... Mas ele mostra só tudo "E", estou fazendo isso no evento afteropen da minha Ibquery que busca os dados: procedure TFrmCai.QryCaixaAfterOpen(DataSet: TDataSet); begin inherited; TFloatField(QryCaixa.FieldByName('Recebido')).DisplayFormat := 'R$ #,##0.00'; If QryCaixa.FieldByName('Tipo').AsInteger =0 then begin TFloatField(QryCaixa.FieldByName('Tipo')).DisplayFormat := 'S'; end else If QryCaixa.FieldByName('Tipo').AsInteger =1 then begin TFloatField(QryCaixa.FieldByName('Tipo')).DisplayFormat := 'E'; end else If QryCaixa.FieldByName('Tipo').AsInteger =2 then begin TFloatField(QryCaixa.FieldByName('Tipo')).DisplayFormat := 'S'; end else If QryCaixa.FieldByName('Tipo').AsInteger =3 then begin TFloatField(QryCaixa.FieldByName('Tipo')).DisplayFormat := 'SC'; end else If QryCaixa.FieldByName('Tipo').AsInteger =4 then begin TFloatField(QryCaixa.FieldByName('Tipo')).DisplayFormat := 'SC'; end else If QryCaixa.FieldByName('Tipo').AsInteger =5 then begin TFloatField(QryCaixa.FieldByName('Tipo')).DisplayFormat := 'EC'; end; end; mas o que eu estou fazendo de errado ? -
(Resolvido) Como editar arquivo texto e verificar se está ok
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
e o que você está querendo. Nada o impede de usar os componentes que você quer para localizar o arquivo .ini e/ou o banco.Sua dificuldade está em usar o opendialog ? o meu problme é como eu vou fazer para quando iniciar o programa ele já checar o caminho, e como eu salvo esse caminho.! -
você colocou o componente no form? então ele tem uma propriedade para ativar ele, verifica se ela está ativada, e tem uim campo para você procurar o skin que deseja para esse form.
-
(Resolvido) Como editar arquivo texto e verificar se está ok
pergunta respondeu ao robinhocne de robinhocne em Delphi, Kylix
mas eu queria buscar pelo um opendialog e abrir o caminho no edit e ai salvar no txt.