Aide - Recherche - Membres - Calendrier
Version complète : colonne d'un gridx
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS > Développement HB++
F.Omenal
Bonjour,

Je suis en train de triffouiller un projet sur la base du sample mémo de hb++.
J'aimerais savoir un petit truc car je pense que qq chose m'échappe. blink.gif

Le gridx dans le sample comme, je l'ai compris se contente de contenir le pointeur vers les données à afficher, ce qui justifie une mise a jour de l'affichage à chaque mouvement du défilement par l'intermédiare des "loaditems" et "drawitems".

Le point qui me chagrine est que a l'heure actuelle je ne peut donc mettre que un pointeur unique lors du remplissage de la grille avec le fillgrid, du coup les seul info que je peut mettre dedans ne peuvent résulter que de la consultation de la base de données (vous m'arrêtez si j'ai rien compris).
Mon soucis, c'est que je souhaiterais pouvoir inclure dans une colonne suplémentaire le nombre de caractère du mémo donc calculer au moment du fillgrid, par exemple, mais aussi un nombre qui lui serat pour l'instand aléatoire. Et la, j'y arrive pas.

Bien sur avec une base dédier, je vois bien comment faire, mais mon but est d'utiliser les mémos.

have some solutions??

merci.
Payalba
Tu ajoutes une colonne et tu fais par exemple dans l'evenement :

Grid1_LoadItem
vValue(2)=len(cMemo.Memo)

En fait le pointeur te donne juste un indice vers tes données.
Cela peut être un numéro d'enregistrement, un indice de tableau, un indice vers une collection, etc...

En fait dans le loaditem tu fais ce que tu veux
Tu peux affecter des données aux cellules qui n'ont rien à voir directement avec ta source de données.

Si tu veux dessiner quelques choses (mettre des couleurs, dessiner une image) tu peux definier dans colone comme userdrw et mettre les actions de dessins dans l'évenement : Grid1_DrawItem
F.Omenal
Merci pour ta réponse.

j'ai pas mal avancer et j'ai réussi a faire qq truc.

Mon petit soucis maintenant, c'est que j'ai attribuer une couleur de fond par catégorie et que je souhaite l'appliquer pour chaque éléments en faisant parti. j'ai donc mon bout de code dans la partie "Grid1_DrawItem" pour faire les gras et les couleurs.

mais mon soucis c'est que la couleur est mise dans le loadItem colonne 2 par exemple, mais que cette couleur est mise en application avec le DrawItem, mais j'arrive pas récuperrer ma valeur correctement ce qui fait que un coup sur deux j'ai un truc bizarre.

t'aurais pas une idée pour que le draw ce fasse systématiquement apres le load et ou un méthode pour récupérer ma valeur de la 2eme colonne dans le draw, parce que il y a telement de sample, que j'arrive pas a trouver mon bonheur et je suis sur que l'appel doit être tout %#!§@.

merci
Payalba
Pour se genre de situation, je laisse tomber le loaditem pour les colonne devant être déssiner et je gere la colonne completement dans le drawitem

Je fait alors des trucs du style :

CODE
Private Sub Grid1_DrawItem(ByVal iRow As Integer, ByVal iCol As Integer, ByVal lItemData As Long, ByVal iLeft As Integer, ByVal iTop As Integer, ByVal iWidth As Integer, ByVal iHeight As Integer)

    dim x as integer

    if iRow mod 2 = 1 then
            Grid1.BackColor = HTMLCOlor("ghostwhite")
    else
            Grid1.BackColor = HTMLCOlor("cornsilk")
     end if

    Grid1.ForeCOlor = Grid1.BackColor
    Grid1.TextColor = uicolor(hbUIFormFrame)

    select case iCol
        case 0

           Grid1.Rectangle iLeft, iTop, iLeft+iWidth-1 , iTop+iHeight-1,hbRectBorderSolid+hbRectFillSolid
           Grid1.CopyArea iLeft+(iWidth-imgPopup.WIdth)/2,iTop+(iHeight-imgPopup.Height)/2,imgPopup.WIdth,imgPopup.Height,imgPopup,0,0

        case 1

          on error goto suite
                db.LookupUniqueID lItemData
                nom = db.nom
                prenom = db.prenom

                x = iLeft

suite:
            Grid1.DrawFont = hbFontStandard

            Grid1.Rectangle iLeft, iTop, iLeft+iWidth-1 , iTop+iHeight-1,hbRectBorderSolid+hbRectFillSolid

            Grid1.TextOut x+2,iTop , nom & " " & prenom, hbTextAlignLeft,iWidth-(x-iLeft)
    end select
End Sub
F.Omenal
Merci pour ta réponse, mais part pas, j'ai encore une question... merci

Maintenant j'ai tout virer du loaditem et tout mis dans le drawitem comme tu me l'a fait voir, j'obtient une truc niquel pour les couleurs et les valeur en gras.( CF image jointe)

(le point noir sont volontaire)

Mon soucis maintenant, c'est que je désire récupérer les 4 caractère de la deuxième ligne du memo (cela je sais faire) et les mettre dans la colonne de droite. Hors le seul endroit que j'ai trouver pour le faire est dans le loaditem, mais a chaque mouvement d'ascenseur il rafraichit et c'est vite pénible (lier au ralentissment). en fait je pensai a un moment donner pouvoir les mettre en meme temps que le fillgrid comme cela plus de soucis au mouvement de grille.

Une idée.

Merci
Payalba
Bizarre ton ralentissement.

Il est possible de voir le code ?
Tu as bcp d'enregistrement mémo ?
F.Omenal

voir le code, je vais essayer, je dit pas qu'il ne merite pas de dégraissage. mais ouvrir en lecture le memo en entier pour extraire 4 caractère et les inscrires dans le tableau cela demande pas forcement long en code mais plus en temp acces machine sur les mémo.
Oui j'ai beaucoup de memo en regle général (entre 100 et 150) vue que je note tout et n'importe quoi avec. Un fois pas an je fais un archivage, mais bon.
Payalba
150 ce n'est pas beaucoup.

Je gere des bases bien plus grande sans problèmes de performances

F.Omenal
Alors cela doit être un problème dans le code déja fait, je vais essayer d'épurer le code correctement avant de continu.

Merci encore
Payalba
Fait attention à tes définitons de variables (les créations dynamques, new, les chaines)
En général, je préfére mettre une chaine global à ma form plutot que de la définir en local dans un évenement etc...

Il ne faut pas oublier qu'avec un palm, il faut penser economie des traitements, de la mémoire, etc..

Parfois les développements sur P entrainent de mauvaise habitudes.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.