Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   declarar variables globales (https://www.clubdelphi.com/foros/showthread.php?t=37225)

mcnudi 07-11-2006 13:48:36

declarar variables globales
 
Hola, buenas tarde
Tengo una stringGrid para imprimir en QReport pero no se donde declarar la variable i:

void __fastcall TForm3::qr1NeedData(TObject *Sender, bool &MoreData)
{
MoreData=i<Form1->sg->RowCount;
if (MoreData){
QRLabel1->Caption=Form1->sg->Cells[1][i];
QRLabel2->Caption=Form1->sg->Cells[2][i];
QRLabel3->Caption=Form1->sg->Cells[3][i];
QRLabel4->Caption=Form1->sg->Cells[4][i];
QRLabel5->Caption=Form1->sg->Cells[5][i];
QRLabel6->Caption=Form1->sg->Cells[6][i];
QRLabel7->Caption=Form1->sg->Cells[7][i];
}
i++;
}

Espero que me ayudeis.

mcnudi 08-11-2006 09:26:15

x si no habéis entendido la pregunta lo que quiero declarar es el índice de la StringGrid para recorrerla q es la variable i.

Ñuño Martínez 08-11-2006 11:11:01

Pues así, sin más datos y sin pensar mucho, ¿como una propiedad privada de la clase TForm3? Otra cosa no se me ocurre...

Por otro lado, ¿dónde la inicializas? O mejor dicho, ¿dónde pensabas inicializarla?

Y, por último, ¿esta pregunta no debería estar en "Otros entornos y lenguajes>C++ Builder"?

mcnudi 08-11-2006 11:18:43

variables
 
una propiedad privada como???
Lo de ponerlo en este foro es por la impresiónen QReport

Ñuño Martínez 08-11-2006 11:39:08

Cita:

Empezado por mcnudi
una propiedad privada como???

Creo que deberías responder, primero, a la pregunta que te hice:
Cita:

Empezado por Ñuño Martínez
Por otro lado, ¿dónde la inicializas? O mejor dicho, ¿dónde pensabas inicializarla?

Evidentemente, me refiero a la variable i. Es importante saberlo porque de ello dependerá buena parte de mi respuesta y, también, para ayudarme a explicarte el porqué de las cosas.

mcnudi 08-11-2006 11:48:28

pensaba inicializarla en el mismo sitio donde la declare inicializándola a 0

Ñuño Martínez 08-11-2006 12:09:29

Bien, como la clase TForm3 es compleja, lo vamos a hacer con la clase TClase, que es muuuuuucho más simple (nota: nunca he usado Builder así que utilizaré C++ "genérico"):
Código:

class TClase {
private:
  int i; // Índice global.
public:
  TClase (void); // El constructor "normal".
// Aquí va el resto de métodos...
};

/* TClase::TClase:
 *  Implementación del constructor "normal". */
TClase::TClase (void)
{
// Inicializa el "índice global".
  i = 0;
// Aquí vendrán otras inicializaciones
}

Básicamente, declaro la propiedad al principio de la definición de clase. Luego le digo al constructor de la clase que inicialice su valor por 0.

mcnudi 08-11-2006 12:15:22

El problema es q con TForm no puedo declarar nada privado y no encuentro ninguna propiedad ni métodoq lo haga.

Ñuño Martínez 08-11-2006 12:43:51

Tienes que modificarlo en el código fuente, no dentro del IDE. Posiblemente (que no lo sé, ya he dicho que nunca he usado Builder) tengas que buscar en el archivo de cabecera (por ejemplo "TForm3.h"). Ten encuenta que, si no existe el constructor, deberás crearlo tu y llamar al constructor de la clase base. Si no sabes como hacerlo, deberías repasar tus apuntes sobre C++.


La franja horaria es GMT +2. Ahora son las 07:10:45.

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