WINDOW MENU (menù finestra)

Voglio implementare la voce di menù ‘finestra’ con le solite voci :
Contrai
Ridimensiona

E l’elenco delle finestre aperte

Qualcuno mi può aiutare ??

Aggiungi i menuHandler per le voci di menu, per fare questo ti consiglio una supeclasse comune alle tue finestre cos lo imposti una volta sola.
per le finestre aperte puoi far aggiungere le relativa voce di menu nell’evento open (con riferimento ad un weakref in modo da evitare riferimenti incrociati) e nell’evento close vai ad eliminare la voce relativa.

ad esempio dichiari la classe mWin subclass di menuItem
nell’evento action inserisci:

if tag<>nil then if WeakRef(tag).Value<>nil and WeakRef(tag).Value isA window then Window(WeakRef(tag).Value).Show end if end if

Poi nell’open della window:
FinestreMenu.Append new mWin(Title,new WeakRef(self))
dove finestre menu il nome del menu a cui vuoi accedere

nel close:

for i as integer=FinestreMenu.Count-1 DownTo 0 if FinestreMenu.Item(i) isA mWin then if FinestreMenu.Item(i).Tag<>nil and WeakRef(FinestreMenu.Item(i).Tag).Value<>nil and WeakRef(FinestreMenu.Item(i).Tag).Value isA window then if Window(WeakRef(FinestreMenu.Item(i).Tag).Value)=self then FinestreMenu.Remove i end if else FinestreMenu.Remove i end if end if next

Chiaramente come ti ho scritto prima, con una superclasse viene meglio.

vediamo se ho capito bene perch sono tardello abbastanza …

Per quello che mi hai chiesto di mettere nella open e close di ogni window ho semplificato
inserendo nell’evento open e close di un componente che ho chiamato idsessione che presente in ogni qualsiasi finestra come oggetto …

per quanto riguarda invece questo :
^^^^^^^^^^^^^^^^^^
ad esempio dichiari la classe mWin subclass di menuItem
nell’evento action inserisci:

if tag<>nil then
if WeakRef(tag).Value<>nil and WeakRef(tag).Value isA window then
Window(WeakRef(tag).Value).Show
end if
end if
^^^^^^^^^^^^^^^^^^

Ribadisco quanto sopra (sono tardello) e dichiaro ufficialmente di non aver capito alcunch .-.
Dove lo devo mettere ???

Forse intendevi nell’handler del sub-menu finestra ??

Crei una classe nuova e la chiami mWin
Imposti come superclasse menuItem
tasto destro aggiungi handler -> action e inserisci il codice che ti ho detto

Crei una classe nuova e la chiami finestraBase
Imposti come superclass window
definisci l’evento open
aggiungi l’hadler per l’evento Open:
inserisci il codice per open che ho scritto prima e poi RaiseEvent open

definisci l’evento close
aggiungi l’handler per l’evento Close inserendo il codice che ho scritto prima e poi RaiseEvent close

aggiungi i menuHandler per i comandi di finestra che vuoi implementare (restore, ingrandisci, chiudi etc)

Poi per le finestre del progetto cambi la super da window a finestraBase e il gioco fatto.

FUNZIONA … e anche perfettamente !

GRANDE ANTONIO COME SEMPRE
GRAZIE GRAZIE