/\ editeur de tiles /\ page2: pb de onMouseWheel event ! [Delphi] - Delphi/Pascal - Programmation
Marsh Posté le 05-08-2002 à 23:50:53
faut faire quoi ?
Marsh Posté le 05-08-2002 à 23:53:07
antp a écrit a écrit : faut faire quoi ? |
essayer et critiquer
Marsh Posté le 05-08-2002 à 23:53:35
ok mais je vois pas de lien dans ton post
Marsh Posté le 05-08-2002 à 23:55:32
Je parie qu'il y avait ce que tu voulais dans la JVCL
Y en a un dedans
http://jvcl.sourceforge.net
(J'ai déjà dit que c'est sous MPL donc gratos? )
Marsh Posté le 05-08-2002 à 23:55:33
ah ben faut le temps que j'upload
http://gardenofeden.free.fr/images [...] inZoom.exe
318 ko
Marsh Posté le 05-08-2002 à 23:56:34
bon, les 3 edit sont les valeurs des composantes en R, G et B et en 16 bits
apres, on peut jouer avec la grille
vala
Marsh Posté le 05-08-2002 à 23:58:09
ha ouais c'est pas mal.
un peu spécial quand même
Marsh Posté le 06-08-2002 à 00:01:53
c'est pas aussi bien que ce que je pensait en fait, dans le carré à gauche des TEdit, ya des couleurs qui se répètent ...
chaque ligne du carré correspond à la couleur courante que l'on fait varier selon une ou plusieurs compsantes, c normal d'avoir des doublons ?
(premiere ligne, selon R, ensuite G, B, RG, RB et enfin GB)
Marsh Posté le 06-08-2002 à 00:02:31
antp a écrit a écrit : ha ouais c'est pas mal. un peu spécial quand même |
+1 c'est pas méga intuitif, mais c'est nouveau comme concept, j'avais jamais vu
Marsh Posté le 06-08-2002 à 00:03:30
>> Zion, je vais quand même jeter un coup d'oeil à sourceforge
Marsh Posté le 06-08-2002 à 00:05:07
y en a 4 ou 5 différents dans le pack
Marsh Posté le 06-08-2002 à 00:12:19
pour info, c'est pour faire un éditeur de tile et mon problème de doublons + haut n'apparait pas à chaque fois donc ça doit être naturel ...
sinon, je pense faire barre en dessous qui affichera les dernières couleurs sélectionnées pour pouvoir revenir en arrière.
à part ça et décrire un peu plus la form, qu'est ce que je pourrais facilement améliorer ?
Marsh Posté le 06-08-2002 à 00:26:14
améliorer?
Euh, y a 2 compos, je vois pas ce que tu veux améliorer
Faudrait ptre en faire une application
Marsh Posté le 06-08-2002 à 10:45:32
bon, avant d'aller plus loin, je voudrais améliorer le code qui est bien dégueux
pour l'instant, j'ai une classe avec une méthode raffraichir qui prend en entrée un pointeur sur un canvas et qui dessine ...
je voudrais faire hériter cette classe et faire qqchose de plus propre mais j'hésite entre un TPanel t un TGraphicsControl pour l'ancetre ...
lequel prendre ?
Marsh Posté le 06-08-2002 à 13:53:30
trueslash a écrit a écrit : bon, avant d'aller plus loin, je voudrais améliorer le code qui est bien dégueux pour l'instant, j'ai une classe avec une méthode raffraichir qui prend en entrée un pointeur sur un canvas et qui dessine ... je voudrais faire hériter cette classe et faire qqchose de plus propre mais j'hésite entre un TPanel t un TGraphicsControl pour l'ancetre ... lequel prendre ? |
Tu nous demandes un avis sur un code qu'on voit pas... Joli
et le TGraphicControl c'est suffisant
Marsh Posté le 06-08-2002 à 14:23:04
c bon, je l'ai fait avec le TGraphicControl o
c'est tout beau maintenant o
l'héritage, ça roxx
Marsh Posté le 07-08-2002 à 08:39:22
nouveau problème:
avec ma clase héritant d'un TGraphicControl, je voudrais détecter quand la souris cesse de survoler mon objet mais j'ai pas trouvé d'évènement qui fasse ça
une idée ?
Marsh Posté le 07-08-2002 à 13:58:30
ReplyMarsh Posté le 07-08-2002 à 15:08:25
mais le problème, c'est que comme évènement du TControl, j'ai que ça:
Code :
|
il faut pas utiliser d'évenements ?
Marsh Posté le 07-08-2002 à 15:14:51
http://www.google.com/search?sourc [...] TER+delphi
http://groups.google.com/groups?so [...] TER+delphi
T'es pas limité a ce que borland te propose, faut intercepter le message toi même.
Marsh Posté le 07-08-2002 à 15:21:42
ok merci
j'ai jamais fait ça, c'est l'occasion d'apprendre
Marsh Posté le 07-08-2002 à 15:28:54
La meilleure facon d'apprendre, c'est de regarder les sources des autres.
http://jvcl.sourceforge.com
Y a + de 300 composants, tu trouveras ton bonheur en sources à analyser ;-)
Ex:
Code :
|
Marsh Posté le 07-08-2002 à 15:29:08
ça roxx
Code :
|
Marsh Posté le 09-08-2002 à 23:16:52
attention, nouvelle question !!!!!!!!!
alors, je suis obligé de décrire un peu le code, désolé :
j'ai une classe TTileSet
Code :
|
tiles est un tableau dynamique , dans le constructeur, j'utilise setlength pour initialiser sa longueur à 1, dans addNewTile, je refais des setlength pour ajouter une case à la fin du tableau.
pour l'instant je n'ai pas de desrtucteur et donc quand j'essaye de quitter le prog avec plus d'une case dans le tableau, ça plante ...
le problème c que je sais pas détruire sa proprement, j'ai essayé de surcharger le destructeur comme ça:
Code :
|
sa plante toujours
je crois que c pas bien de faire des setlength dans les méthodes non ?
chuis un peu coincé là
Marsh Posté le 09-08-2002 à 23:19:24
perso j'utiliserais un TList (liste chaînée)
Marsh Posté le 09-08-2002 à 23:22:03
antp a écrit a écrit : perso j'utiliserais un TList (liste chaînée) |
un TObjectList, il se démerde tout seul pour virer les objets, c'est mieux
Marsh Posté le 09-08-2002 à 23:23:19
je reéssaye ...
je rame un peu avec les destructeurs, je sais jamais quand le papa destructeur suffit et quand il faut en faire un nouveau
Marsh Posté le 09-08-2002 à 23:28:34
Zion a écrit a écrit : un TObjectList, il se démerde tout seul pour virer les objets, c'est mieux |
sauf quand, comme dans mon cas, tu as parfois deux lists qui pointent vers les mêmes objets
(parce que la seconde des deux listes représente ce qui est sélectionné dans la première par ex)
Marsh Posté le 09-08-2002 à 23:31:32
Quand tu alloues un truc, tu dois le désallouer dans ton constructeur
pour utiliser un TObjectList, je ferais un truc du genre
TTaClass = class(TComponent)
private
FList: TObjectList;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy;override;
end;
constructor TTaClass.Create(AOwner: TComponent);
begin
inherited; //Pour le constructeur, tu le fous au début ca
FList := TObjectList.Create;
end;
destructor TTaClass.Destroy;
begin
FList.Free;
inherited; //Le destructor c'est a la fin l'inherited
end;
si c'est un array statique, pas besoin de surcharge, mais dès que tu alloues un truc, ca c'est la jolie soluce.
Marsh Posté le 09-08-2002 à 23:32:21
antp a écrit a écrit : sauf quand, comme dans mon cas, tu as parfois deux lists qui pointent vers les mêmes objets (parce que la seconde des deux listes représente ce qui est sélectionné dans la première par ex) |
Alors tu lui dis
OwnsObjects := false;
Marsh Posté le 09-08-2002 à 23:51:13
ha ok
C'est toujours bon à savoir
Marsh Posté le 10-08-2002 à 00:26:33
le TObjectList, c'est bieng, mais comment je fais pour accéder à ce qu'il y a dedans ...
par exemple, si j'ai ça:
Code :
|
en il me jette parce qu'il est pas censé savoir que c un TTile le TObject ...
faut que je fasse avec des with à chaque fois
Code :
|
Marsh Posté le 10-08-2002 à 00:35:39
non pas des with
Cast avec check du type (exception si c pas la bonne classe)
(tiles[0] as TTile).Machin
Cast brute - genre C/C++ (aucun check, plantage assuré si c pas la bonne classe)
TTile(Tiles[0]).Machin
Marsh Posté le 10-08-2002 à 00:42:25
erf je savais même pas que yavait des casts en pascal
merchi
Marsh Posté le 10-08-2002 à 00:44:55
le with dans ce cas-ci c'est quand même pas mal si tu dois accéder à plusieurs propriétés/méthodes
Marsh Posté le 10-08-2002 à 10:58:29
merci à tous les deux, voilà le fruit de mon dur travail
http://gardenofeden.free.fr/images [...] inZoom.exe
est-ce que c'est posible de faire du double-buffering avec les TCanvas des TGraphicControl
Marsh Posté le 10-08-2002 à 11:41:37
Je pense que tu dois l'appliquer au TWinControl le plus proche (Panel ou Form sur lequel est ton compo si jamais le composant dont tu dérives ne le supporte pas)
Marsh Posté le 10-08-2002 à 14:48:48
Eh benh c'est pas mal tout ca, chez moi ca flicker pas du tout en tout cas
Pour le double-buffering, en fait c'est tout con, tu sais le gérer toi même en interne, suffit de faire tout tes dessins sur un TBitmap et de faire un Draw du TBitmap dans le OnPaint, c'est tout ce que fait le double-buffering. Sinon comme l'a dit antp, tu l'appliques au compo parent qui le supporte et c'est bon aussi.
Marsh Posté le 05-08-2002 à 23:49:42
comme je trouvais pas mon bonheur parmis les composants, j'ai fait un truc tout seul ce soir et j'aimerais bien que qqun télécharge le .exe et le teste chez lui pour me donner des conseils ...
une bonne âme ?
Message édité par trueslash le 30-09-2002 à 13:07:14