Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [delphi] oldcreateorder does not exist

    Ciao
    dopo aver letto e visionato il materiale fornitomi da alka per l'implementazione di
    applicazioni a pagine, sto esercitandomi creando un' applicazione a pagine che al variare della scelta tramite un radiogroup mi visualizzi su un pannello una frame con delle immagini.
    Utilizzando il class reference quando creo una frame mi da un'errore di questo tipo:
    ''Property OldCreateOrder does not exist''.
    Non riesco a capire dove sia il problema.
    Grazie
    re dei giovani

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Come hai creato i discendenti del frame che costituisce la pagina di base?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    forse ho capito.....nella frame modello non ho messo nessun metodo, mentre nella frame a cui cerco di accedere ho un metodo visualizzaImmagine....
    Dovrei forse definire e implementare anche nella frame modello un
    metodo di questo tipo indicandolo poi virtual?
    re dei giovani

  4. #4
    ...scusa ho detto una cappellata...infatti la prova mi smentisce......

    ti posto codice frame base e frame figlia...per quanto riguarda caricamento ho seguito il tuo esempio:

    FRAME PADRE

    unit FrameVis;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

    type
    TVisualFrame = class(TFrame)


    private
    { Private declarations }
    protected
    procedure visualizzaPannello(n:integer);virtual;

    public
    { Public declarations }
    end;

    TVisualFrameClass = class of TVisualFrame;

    implementation

    {$R *.dfm}

    procedure TVisualFrame.visualizzaPannello(n:integer);
    begin
    showmessage('peocedura modello frame');

    end;


    FRAME FIGLIA

    unit FrameImm;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, FrameVis,
    ExtCtrls,variants;

    type
    TFraImmagini = class(TVisualFrame)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    procedure VisualizzaPannello(n : Integer); override;
    private
    { Private declarations }
    //procedure VisualizzaPannello(const n : Integer);
    public
    { Public declarations }
    //property WhichPanel write VisualizzaPannello;


    end;

    implementation

    {$R *.dfm}

    procedure TFraImmagini.VisualizzaPannello(n : Integer);
    begin

    if n = 0 then
    begin
    panel1.Visible := True;
    panel2.Visible := False;
    panel3.Visible := False;
    end;


    if n = 1 then
    begin
    panel1.Visible := False;
    panel2.Visible := True;
    panel3.Visible := False;
    end;


    if n = 2 then
    begin
    panel1.Visible := False;
    panel2.Visible := False;
    panel3.Visible := True;
    end;


    end;


    end.

    ti posto anche parte della funzione loadPage, la quale viene eseguita senza problemi fino all'ultima linea che ti posto

    procedure TMainForm.LoadFrame(FrameRef : TVisualFrameClass; n : Integer);
    begin
    // esce se non è richiesto nulla
    if FrameRef = nil then exit;
    // esce se ciò che è richiesto è già presente
    if ActualFrame <> nil then
    if ActualFrame.ClassType = FrameRef then exit;
    // se devo cambiare la frame distruggo quella presente
    if ActualFrame <> nil then
    FreeAndNil(ActualFrame);
    // ... e creo quella che mi serve
    ActualFrame := FrameRef.Create(self);

    Dopo esecuzione ultima riga genera l'errore...
    re dei giovani

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Non mi pare ci sia alcun nesso, né che vi sia alcun obbligo di definire metodi.

    Secondo me, hai creato nel modo errato i discendenti del frame base.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Quando è necessario creare il discendente di un Frame o di un Form in Delphi, si fa uso del menu [File|New|Other...]; nella finestra di dialogo in questione, in genere è presente un nodo "Inheritable Items" (elementi ereditabili) che consente di selezionare l'elemento da utilizzare come "base" per la creazione di una nuova classe: questa è la procedura da seguire per creare classi discendenti, che provvede a definire correttamente tale condizione anche nel file DFM, oltreché nel file PAS, senza dover scrivere tutto il codice.

    Il mio dubbio, considerando l'errore, è che tu abbia saltato questo passaggio, che è quello corretto.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    ..........................hai ragione.................io non passavo da questa parte ma creavo due frame: quella padre e quella che poi denominavo figlia.
    Come mai non va bene lo stesso?N el senso in fondo nella mia figlia ho
    TfraImmagini = class (TVisualFrame)....
    .....questo non garantisce già la creazione della parentela?
    re dei giovani

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da re dei giovani
    .....questo non garantisce già la creazione della parentela?
    Solo a livello di codice, ma il DFM non è corretto (puoi confrontarli per vedere le differenze).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.