Newsgroup: it.comp.lang.delphi
Titolo: Problemi con compilazione "condizionale" IFdef...

Nella mia form, ho diversi bottoni, se volessi renedere invisibile (o meglio 
non creato) un bottone in base ad un IFDEF come devo fare?
ho provato cosě (ho tolto tutto quel che non serve a capire il problema)
unit Main;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
type
  TFormMain = class(TForm)
    {$IFDEF PCR}
    TBFastPCR1K: TToolButton;
    {$ELSE}
    {$ENDIF}
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  FormMain: TFormMain;
implementation
uses servizifrm;
{$R *.dfm}
procedure TFormMain.FormCreate(Sender: TObject);
begin
............
.............
end;
Ma nonostante abbia OMESSO la  {$DEFINE PCR}, il ToolButton č visibile :\
Come faccio per non far creare o rendere invisibile il bottone?

 
-- 
Roal Zanazzi

Hai semplicemente quotato il mio mess?  Non vedo differenze :\ 

>
Sorry, ho inavvertitamente inviato prima di rispondere...
In quel modo elimini solo la dichiarazione della variabile associata al 
componente TToolButton, ma il componente viene creato come definito nel 
file .dfm della form.
Purtroppo (almeno fino a Delphi 7) non e' possibile usare la 
compilazione condizionale nei file .dfm.
Una delle possibilita' che hai (forse la piu' semplice) e' nascondere il 
pulsante a runtime:
procedure TFormMain.FormCreate(Sender: TObject);
begin
{$IFNDEF PCR}
	TBFastPCR1K.Visible := false;
{$ENDIF}
end;
-- 
Roal Zanazzi

non creato) un bottone in base ad un IFDEF come devo fare?
Non puoi farlo perché i bottoni hanno un riferimento nel DFM.
In ogni caso, mi sembra una richiesta un po' stranda.
Perché vuoi farlo ? qual è la tua reale necessità ?

 Perché vuoi farlo ? qual è la tua reale necessità ?
Poichè alcune "form" del mio progetto sono ancora in fase di sviluppo ed il 
progetto è comunque già utilizzabile se distribuito; in pratica ci sono 
diverse parti che stò portando avanti ma che non devono essere visibili 
all'utente finale (quindi mettendo un del "define" o togliendolo al momento 
della compilazione, mi risolverebbe il problema).
Spero di esser stato chiaro. 

 TBFastPCR1K.Visible := false;
Undeclared identifier  TBFastPCR1K
Se metto il define funge ma vedo il tasto :( 

Undeclared identifier  TBFastPCR1K
Perché hai lasciato la (scorretta) $IFDEF iniziale, quella sulla
definizione di TBFastPCR1K.  Devi togliere quella e lasciare questa,
eventualmente.

della compilazione, mi risolverebbe il problema).
Programmatore fai da te ? no CVS ? ahiahiahiahiaiii.
Impara a fare un versioning del tuo software e non avrai di questi
problemi.  Tu devi avere la versione su cui sviluppi che procede
indipendentemente da quella in produzione.  La compilazione
condizionale NON è l'alternativa.

 condizionale NON è l'alternativa.
Non è consigliato nemmeno se si tratta di una sola form? 

Non č consigliato nemmeno se si tratta di una sola form? 
No.

 No.
Sigh!

Sigh!
Bah..

 eventualmente.
Perfetto grazie!
(non si finesce mai di imparare)

Cmq...potresti per favore spiegarmi bene perchè non è una buona regola 
quello che volevo e stavo facendo? Ci sono altre vie più consigliate? (il 
cvs che hai accennato,non è roba tipo repository dove si pescano i sorgenti 
e si compilano tipo sourceforge?) 

Ci sono altre vie più consigliate?
Quella che ti ho indicato è la via più corretta per avere versioni
dell'applicazione distinte, in modo da poter portare avanti lo
sviluppo senza inficiare la versione in produzione.
Di software per la gestione del versioning ce ne sono diversi:
"CVS", "Subversion", "archive" sono sicuramente i migliori in
circolazione.

 circolazione.
Tu quale usi? E quale consiglieresti ad uno che non ha mai fatto stà cosa?
Thanks! 

Tu quale usi? E quale consiglieresti ad uno che non ha mai fatto stà cosa?
CVS è senz'altro quello più usato; in molti ritengono Subversion
superiore e per certi versi non gli si può dare torto.  Ho usato molto
Visual Source Safe, che è facile e intuitivo ma non è a costo zero
come CVS.  Ora come ora utilizzo CVS.  Ti consiglio comunque
Subversion:
http://subversion.tigris.org/