PDA

View Full Version : [Borland C++ Builder] Visualizzare un form


Fenomeno85
04-12-2004, 13:31
Gente come si fa a far visualizzare un form :muro:

spiego:
1) ho creato un nuovo form (frmImpostazioni)
2) creato il menu nel form principale (frmHome)
3) nel menu a tendina ho creato impostazioni
4) nel codice di impostazioni come faccio a richiamare frmImpostazioni?

Ho provato frmImpostazioni->Show(); ma mi da errore infatti non trova nessun metodo dopo aver messo ->

~§~ Sempre E Solo Lei ~§~

Fenomeno85
04-12-2004, 14:19
nessuno che mi riesca a dare una mano ? :mbe: :cry:

ho capito però una cosa:
se nelle opzioni metto del frmImpostazioni Visible a vero come default al posto di false, compare anche questo form :( direttamente con l'altro principale :(

Però non trovo come richiamare sto scemo dal form principale :D

~§~ Sempre E Solo Lei ~§~

cikko
04-12-2004, 14:58
Ciao,
non so se ho ben capito la tua situazione, caso mai correggimi. Ad esempio:
hai un frmHome (principale) ne vuoi visualizzare un altro quando lo richiami (o da menu, o da pulsante, ecc).
Allora, prova ad impostare Visible a false per frmImpostazioni, poi rimuovi la creazione automatica della form (Project>Option...).
Dall'evento (sia esso pulsante, menu, ecc) prova a scrivere codice simile a:
TfrmImpostazioni* frmImpost = new TfrmImpostazioni(Application);
frmImpost->Show();

In sostanza crei la form a run-time.
Eventualmente potresti nascondere la form home, se l'applicazione non e' MDI.

Saluti

Fenomeno85
05-12-2004, 10:30
grazie mille ma non funziona :muro:

[C++ Error] Unit1.cpp(39): E2451 Undefined symbol 'TfrmImpostazioni'
[C++ Error] Unit1.cpp(39): E2451 Undefined symbol 'frmImpost'
[C++ Error] Unit1.cpp(39): E2303 Type name expected
[C++ Error] Unit1.cpp(39): E2379 Statement missing ;

~§~ Sempre E Solo Lei ~§~

cikko
05-12-2004, 11:53
Sotto le direttive del sorgente, guarda come sono dichiarate le form (i puntatori):
TfrmImpostazioni* frmImpost;

devi rinominarli di conseguenza, oltre ad includere anche il file che contiene le altre eventuali form.
Caso mai posta ancora che vediamo.

Fenomeno85
05-12-2004, 12:04
intendi queste?


//---------------------------------------------------------------------------

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TfrmImpostazioni : public TForm
{
__published: // IDE-managed Components
TStaticText *StaticText1;
TStaticText *Wallpaper;
TStaticText *StaticText3;
TTimer *Timer1;
TTimer *Color;
void __fastcall Timer1Timer(TObject *Sender);
void __fastcall ColorTimer(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TfrmImpostazioni(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TfrmImpostazioni *frmImpostazioni;
//---------------------------------------------------------------------------
#endif

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

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
//nome del controllo
Edit1->Text = Image1->GetNamePath();
Image1->Picture->LoadFromFile("c:\\col.jpg");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
Image1->Picture->LoadFromFile(Percorso->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Esci1Click(TObject *Sender)
{
// chiusura del programma
Application->Terminate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Informazioni1Click(TObject *Sender)
{
TfrmImpostazioni *frmImpost;
frmImpost = new TfrmImpostazioni(Application);
frmImpost->Show();
Application->NormalizeTopMosts();
Application->MessageBox("Chiamata del form impostazioni", "Look", MB_OK);
Application->RestoreTopMosts();
}
//---------------------------------------------------------------------------


~§~ Sempre E Solo Lei ~§~

cikko
05-12-2004, 13:44
Nell'header "Unit1.h", aggiungi
#include "Unit2.h"

Adesso le istruzioni della funzione TForm1::Informazioni1Click() dovrebbero
essere compilate correttamente.

<OT>
se ti posso dare un consiglio, prendi l'abitudine di salvare
i file header ed i sorgenti con nomi comprensibili. Nel caso
fra tot mesi dovrai modificare qualcosa sara' molto piu' facile
e veloce farlo.
</OT>

Fenomeno85
05-12-2004, 14:40
gradissimo :D grazie mille :D

~§~ Sempre E Solo Lei ~§~

Fenomeno85
05-12-2004, 16:08
utilizzo questo per non aprirne un altro, dato che non ho mai fatto una roba del genere mi chiedo:
sai come si fa a far aprire una machera ad albero per far selezionare una cartella ?

~§~ Sempre E Solo Lei ~§~

Fenomeno85
05-12-2004, 16:15
trovato ;)

~§~ Sempre E Solo Lei ~§~

Fenomeno85
05-12-2004, 16:47
come si fa a convertire una AnsiString in char?

~§~ Sempre E Solo Lei ~§~

cikko
06-12-2004, 11:09
char* str;
str = StringaAnsi.c_str();

Fenomeno85
06-12-2004, 11:17
Originariamente inviato da cikko
char* str;
str = StringaAnsi.c_str();

si grazie l'avevo già trovato :)

~§~ Sempre E Solo Lei ~§~