Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-04-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Problema al invocar componentes de otro form

Hola, estoy teniendo un problema a la hora de hacer referencia al comboBox de un formulario desde otro formulario, me tiene descolocado por que haciendo la llamada por ejemplo del formulario "a cerca de..." funciona bien, pero me da error si llamo al componente antes citado de otro formulario. Pongo el código y lo explico mejor.

Código Delphi [-]
unit editor;
interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus, Vcl.ExtCtrls, ShellApi,
  Vcl.ComCtrls;

type
  TbEditor = class(TForm)
    menu: TMainMenu;
    Archivo1: TMenuItem;
    Guardar1: TMenuItem;
    Salir1: TMenuItem;
    Informacin1: TMenuItem;
    Acercade1: TMenuItem;
    Panel2: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Abrir1: TMenuItem;
    memo1: TRichEdit;
    procedure Salir1Click(Sender: TObject);
    procedure Guardar1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Abrir1Click(Sender: TObject);
    procedure Acercade1Click(Sender: TObject);
    procedure memo1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  bEditor: TbEditor;

implementation

{$R *.dfm}

uses BNote, about;


procedure TbEditor.Acercade1Click(Sender: TObject);
begin
  aboutFRM.ShowModal
end;

procedure TbEditor.Guardar1Click(Sender: TObject);
var
  listado: tStringList;

begin
  listado:= tStringList.Create;
  bNotas.lista.items.add(edit1.Text);
  if memo1.Text <> '' then
    begin
      bNotas.editor.Lines.Add((chr(13))+edit1.Text+(chr(13))+memo1.Text+
      chr(13)+'________________________________________'+(chr(13)));
    try
      listado.Add(edit1.Text);
      listado.SaveToFile('entradas.text');
    finally
      FreeAndNil(listado);
    end;
  end;
end;
...

//En las lineas de color rojo es donde se marca el/los errores:
{
[dcc64 Error] editor.pas(86): E2003 Undeclared identifier: 'lista'
[dcc64 Error] editor.pas(86): E2066 Missing operator or semicolon
[dcc64 Error] editor.pas(89): E2003 Undeclared identifier: 'editor'
[dcc64 Error] editor.pas(89): E2066 Missing operator or semicolon
[dcc64 Fatal Error] F2063 Could not compile used unit 'editor.pas'
}

La llamada la intento hacer desde el formulario "editor", por otra parte la unidad "bNote" contiene un formulario llamado "bNotas" y este a su vez un comboBox llamado "lista", al hacer clic sobre "guardar" del menú (del formulario editor), supuestamente realiza una llamada a la unidad bNote, a su formulario (bNotas) y a su control comboBox (lista).
De igual modo, se hace la llamada al formulario "acerca de...." que se encuentra dentro de la unidad "about" y en este caso no hay problema.

¿por qué si he declarado la unidad "bNote" delphi me tira un error diciendo que no está declarado el identificador "lista" cuando si está declarado en el uses
(
Código Delphi [-]
uses bNote, about
)?

No soy ningún experto en delphi, pero nunca he tenido problema para hacer llamadas a componentes de segundos formularios y me tiene descolocado. Lo curioso es que antes funcionaba, y el unico cambio que he realizado, ha sido implementar el código que ecfisa me sugirió en este otro hilo), pero tampoco tiene que ver una cosa con otra, así que no entiendo por que antes la llamada funcionaba y ahora no.

Saludos y gracias de antemano.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.

Última edición por danielmj fecha: 21-04-2014 a las 10:14:29.
Responder Con Cita
  #2  
Antiguo 21-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola danielmj.

Con los errores que mostras no lo entiendo...

¿ No recibiste también el error Undeclared identifier: 'bNotas' ? De ser así, podría haber una confusión en el nombre del form. Revisa si el nombre del form no es "bNotes" o algo similar, a veces pasa...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 21-04-2014 a las 10:57:49.
Responder Con Cita
  #3  
Antiguo 21-04-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Hola ecfisa,

gracias por responder tan rapido, he hecho una captura de delphi para que veas que el nombre del formulario es "bnotas"



Realmente, no entiendo que pasa y este tipo de cosas me frustra bastante mas cuando no dejo de darle vueltas y no cosigo encontrar el error. Voy a probar el mismo codigo en lazarus, como en este si funcione y en delphi no, ya me volvere loco del todo.

Saludos y otra vez gracias.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #4  
Antiguo 21-04-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Hola de nuevo, acabo de probar el mismo codigo en lazarus y funciona perfectamente, no entiendo nada.

Saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #5  
Antiguo 21-04-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
danielmj,

Cita:
Empezado por danielmj
...estoy teniendo un problema a la hora de hacer referencia al ComboBox de un formulario desde otro formulario...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    MainMenu1: TMainMenu;
    Form21: TMenuItem;
    procedure Form21Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

Uses Unit2;

procedure TForm1.Form21Click(Sender: TObject);
begin
   Unit2.Form2.Show;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   Unit2.Form2.ComboBox1.Items.Add(Edit1.Text);
end;

end.
El código anterior en Delphi 7 bajo Windows 7 Professional x32, adiciona Items en el ComboBox1 de Form2 en la unidad Unit2 desde Form1 en la Unidad Unit1, y muestra el formulario Form2, como se muestra en la imagen:



Espero sea útil

Nelson.
Responder Con Cita
  #6  
Antiguo 22-04-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
hola nelson,

ahora mismo estoy limpiando el pc de porqueria, y no puedo probar tu codigo, en cuanto lo haga te comento. Saludos y gracias por el interés.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #7  
Antiguo 22-04-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Hola nlsgarcia, ya probe lo que me indicabas de preceder la llamada al componente con la unidad, y sigue sin funcionar. No sé que pasa.

En fin, gracias y saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #8  
Antiguo 22-04-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Hola, he probado a crear un proyecto nuevo desde 0, teniendo dos sesiones de delphi abiertas y simplemente, copiando y pegando de una a otra y resulta que una (llamemosle original) sigue con el mismo error y la otra teniendo los mismos formularios, unidades y código funciona sin errores. Ahora si que no entiendo nada.

En fin, ahora que no me da errores ya guarde una copia por si las moscas, aunque sigo sin entender por que siendo basicamente el mismo programa uno da error y el otro no.

Saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #9  
Antiguo 22-04-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
danielmj,

Cita:
Empezado por danielmj
...he probado a crear un proyecto nuevo desde 0, teniendo dos sesiones de Delphi abiertas y simplemente, copiando y pegando de una a otra y resulta que una (original) sigue con el mismo error y la otra teniendo los mismos formularios, unidades y código funciona sin errores...En fin, ahora que no me da errores...
Al parecer el problema estaba en los archivos de control de Delphi, sería bueno que crearas un proyecto de pruebas en el cual borraras todos los archivos (Del proyecto original) excepto los .dpr, .dfm y .pas y verificaras el funcionamiento del mismo, es muy probable que funcione correctamente.

Espero sea útil

Nelson.
Responder Con Cita
  #10  
Antiguo 22-04-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Voy con ellos y comento. Gracias y saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Invocar Funcion PHP desde form html jfontane PHP 6 14-11-2016 22:11:23
Manipular objetos desde otro objeto en otro form Nicolas_2011 Delphi para la web 8 17-11-2012 18:12:51
Acceder a componentes de otro form alexisenp OOP 7 12-12-2011 01:53:32
llamar al evento click de un boton q se encuentra en un form desde otro form TURBOIGOR OOP 6 02-12-2008 14:50:16
Imposible hacer visible un form desde otro form SMTZ .NET 13 16-01-2006 21:41:08


La franja horaria es GMT +2. Ahora son las 11:53:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi