Framework 020 - CONTROLS-VISUELS

Liste des tâches

FS#5 - Fonction nouveau skin

Concerne le projet: Framework 020 - CONTROLS-VISUELS
Ouverte par Loic Le Gallou (loic) - samedi, 31 mars 2007, 18:18 GMT+2
Dernière édition par Loic Le Gallou (loic) - jeudi, 01 novembre 2007, 20:01 GMT+2
Type de tâche Nouvelle fonction
Catégorie Gestion des Skins
Etat A tester
Assignée à Loic Le Gallou (loic)
Système d'exploitation All
Sévérité Haute
Priorité Haute
Basée sur la version 1.0b3
Due pour la version 1.0b4
Date d'échéance Non décidé
Pourcentage achevé: 100%
Votes 0
Privée Non

Détails

Fonction nouveau skin
Cette tâche dépend de

Commentaire de Loic Le Gallou (loic) - dimanche, 15 avril 2007, 23:55 GMT+2
Il faut pour cela etre capable de recréer les fenetres. Theoriquement on en est capable grace au bureau, il faut donc integrer une fonction de l'ancement de l'éditeur de skin à partir du bureau. Attention aussi à verouiller les accés aux instances des fenetres.
Commentaire de Loic Le Gallou (loic) - mardi, 08 mai 2007, 01:10 GMT+2
Technique à étusdier : instancier les fenetres, copier les composants de la nouvelle fenetre sur l'ancienne
Commentaire de Loic Le Gallou (loic) - mercredi, 23 mai 2007, 19:29 GMT+2
voila une petite procedure, attention, realloc du composant (mais on update la reference).
Qq pb si on l'applique a un WinControl (les composants contenus sont perdus)
a adapter pour recharger l'ensemble d'une form (boucle pour le pas reallouer la fenetre pour chaque composant)

procedure ReloadControl2(var ctrlref);

function FindControl(f : TWinControl; name : string) : TControl;
Var
i : integer;
begin
result := nil;
i := 0;
while (i < f.ComponentCount) and (f.Components[i].Name <> name) do
inc(i);
if (i < f.ControlCount) then
if (f.Components[i] is TControl) then
result := f.Components[i] as TControl;
end;

Var
New_CtrlOwner : TWinControl; //TForm;
ctrl : TControl;
CtrlOwnerClass : TWinControlClass; // TFormClass;
CtrlOwner : TComponent; //TForm;
CtrlName : string;
CtrlParent : TWinControl;
begin
ctrl := TControl(ctrlref);
ctrlname := ctrl.name;
ctrlparent := ctrl.parent;
// creation nouvelle fenetre
ctrlowner := ctrl.owner;
CtrlOwnerClass := TWinControlClass(ctrlowner.ClassType);
New_CtrlOwner := CtrlOwnerClass.Create(ctrlowner);
try
// suppression et desallocation controle d'origine
ctrlowner.RemoveComponent(ctrl);
ctrl.Free;

// suppression nouveau controle de sa fenetre
ctrl := FindControl(New_CtrlOwner, ctrlname); //frm.Edit1;
New_CtrlOwner.RemoveComponent(ctrl); //frm.Edit1);

// ajout controle de la nouvelle fenetre dans celle d'origine
TControl(ctrlref) := ctrl;
ctrlowner.InsertComponent(ctrl);
ctrl.Parent := ctrlparent; //f;
finally
New_CtrlOwner.Free;
end;
end;
Commentaire de Loic Le Gallou (loic) - jeudi, 01 novembre 2007, 20:01 GMT+2
Solution actuelle : chargement d'un skin par defaut
Commentaire de Loic Le Gallou (loic) - jeudi, 01 mai 2008, 11:48 GMT+2
autre solution : gérer une possibilité de commande de redémarrage du player

Chargement...