Domanda

Ogni tanto un po 'quando sto tweaking le mie classi tframe (aggiunta di proprietà, metodi, ecc), l'IDE si confonde e si comporta come se si pensa che il telaio è un modulo, completo di intestazione / didascalia, bordi, ecc Eppure, chiaramente la classe è dichiarata come un discendente TFrame. Tutte le idee su ciò che provoca questo, come prevenire, e come rimediare?

Sto usando Delphi 2007 Pro. Si noti inoltre (se è importante), i discendenti tframe sono tipicamente registrati con l'IDE (vale a dire sulla tavolozza) tramite un pacchetto in fase di progettazione.


Più tardi: "Ulteriori specifiche": La cornice che sto avendo questo problema con al momento è, visivamente, un TFrame molto semplice (cambiano solo dal nuovo TFrame è la dimensione e il colore di sfondo).

Ecco la sua dichiarazione di classe:

TBasePanel = class(TFrame)
  private
    FPanelManager: TPanelManager;
    procedure SetPanelManager(const Value: TPanelManager);
  protected
    procedure Connect; virtual; abstract;
    procedure Disconnect; virtual; abstract;
    procedure Refresh; virtual;
    procedure Requery; virtual; abstract;
  published
    property PanelManager: TPanelManager read FPanelManager write
        SetPanelManager;

Questo telaio è utilizzata come classe base per un certo numero di altri. Io sono solito modificarlo direttamente dal progetto BPL a cui appartiene (perché tutti questi fotogrammi installare alla tavolozza), piuttosto che come parte di un progetto EXE, con le relative forme aperte, ecc

Inoltre, "progettista embedded" è selezionata in Strumenti -> Opzioni.

Mi risparmio di tutti i file DFM come testo piuttosto che binario e (se quello che conta affatto).

È stato utile?

Soluzione

Ho incontrato lo stesso problema. I seguenti passaggi risolto il problema per noi, potrebbe anche funzionare per voi:

  1. nell'IDE: chiudere tutti i moduli che utilizzano il telaio
  2. aprire il telaio, vista come testo (* DFM)
  3. il DFM probabilmente inizia con oggetto MyFrame: TMyFrameClass
  4. cambiare questo a MyFrame ereditato: TMyFrameClass

Non so che cosa ha causato il problema.

Altri suggerimenti

Forse si era deselezionata la casella di controllo 'embedded progettista'? (Strumenti | Opzioni | Opzioni Ambiente | VCL Designer). Allora, infatti, il telaio viene visualizzato in fase di progettazione come forma (con didascalia, bordo, ecc). Anche un codice concreta del vostro discendente TFrame problematico o ulteriori dettagli sul suo caso sarebbe di aiuto.

Per quanto ne so, si deve avere sia la forma e la struttura aperta nell'editor quando si modifica il telaio. Altrimenti ci possono essere problemi di aggiornamento. Anche se non ho visto questo.

Ma ho rinunciato a fotogrammi molto tempo fa, perché non ho trovato loro molto affidabile.

In questo momento io li uso solo per la prototipazione, la creazione di un componente personalizzato (derivato di un pannello con i comandi apropriate su di esso).

Potrebbe essere necessario registrare il modulo personalizzato per l'IDE Ma le proprietà aggiuntive non funzionano bene a meno che non siano in classe antenata.

Ho incontrato un sacco di problemi con TFrame e, infine, è venuto a tale soluzione che risolve tutti i miei problemi: creo e frame di progettazione visivamente, ma li uso solo per codifica manuale

.

Come effetto collaterale mie applicazioni è diventato più piccolo, a causa della minore DFM-s.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top