Combobox et texte affiché

Sujets variés concernant le développement en PureBasic
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Combobox et texte affiché

Message par Anonyme2 »

J'ai une combobox qui affiche les noms des dossiers, mais lorsque le nom dépasse la longueur de la zone d'affichage, on ne voit pas la fin du nom du dossier, voir sur l'image ci-dessous.

Je pense qu'il existe des API windows pour tronquer ce nom mais je ne trouve pas. Avez-vous une idée sur ces API.

Merci

Image
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Combobox et texte affiché

Message par Chris »

Il y a bien une fonction qui donne le chemin court, comme sous MS Dos, mais je pense que ce n'est pas ce que tu cherches.
De toute façon, je ne me souviens pas du nom de la fonction

Sinon, ça doit assez simple de faire une fonction qui te coupe le chemin et ne garde que le nom du fichier et celui du dernier dossier, par exemple.

Un truc qui te permette de remplacer un chemin comme ça:
C:\Dossier1\Dossier2\Dossier3\Dossier4\Dossier5\Fichier.glop
en chemin comme ça:
C:\...\...\...\...\Dossier5\Fichier.glop
Ça donnerait un petit code dans ce genre là, à mettre dans une procédure:

Code : Tout sélectionner

Chemin$ = "C:\Dossier1\Dossier2\Dossier3\Dossier4\Dossier5\Fichier.glop"

N = CountString(Chemin$, "\")

Debut$ = StringField(Chemin$, 1, "\")+"\"
Fin$ = StringField(Chemin$, N, "\") + "\" + StringField(Chemin$, N+1, "\")

For i = 2 To N-1
  Milieu$ + "...\" 
Next 
Chaine$ = Debut$ + Milieu$ + Fin$ : Debug Chaine$
Résultat au debugger:
C:\...\...\...\...\Dossier5\Fichier.glop
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Combobox et texte affiché

Message par Anonyme2 »

Merci Chris, disons que je voulais utiliser les API.

A+
Denis
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Combobox et texte affiché

Message par Chris »

J'ai retrouvé la fonction. C'est GetShortPathName_()

Par contre, ça te donne une chaine qui est presque aussi longue que celle que tu veux convertir :?

Code : Tout sélectionner

Chaine$ = "Ici, il faut mettre un chemin (avec le fichier) qui existe vraiment sur ton disque"

ShortPath.s = Space(#MAX_PATH)
Result = GetShortPathName_(Chaine$, ShortPath, #MAX_PATH)

Debug ShortPath
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Combobox et texte affiché

Message par Backup »

tu ne peux pas ajouter un ScrollBarGadget ?

Resultat = ScrollBarGadget(#Gadget, x, y, Largeur, Hauteur, Minimum, Maximum, LongueurPage [, Options])

comme ça tu ne tronque rien , ;)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Combobox et texte affiché

Message par Chris »

Dobro a écrit :tu ne peux pas ajouter un ScrollBarGadget ?

Resultat = ScrollBarGadget(#Gadget, x, y, Largeur, Hauteur, Minimum, Maximum, LongueurPage [, Options])

comme ça tu ne tronque rien , ;)
Une ScrollBar sur un combo!
Tu fais ça comment, toi? 8O
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Combobox et texte affiché

Message par Backup »

oui.. :oops: bon je vais dormir :lol:
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Combobox et texte affiché

Message par Anonyme2 »

Il me semble avoir vu du code il y a longtemps sur ce sujet et je pense à LSI mais j'ai aussi la mémoire qui flanche :mrgreen:
zaphod
Messages : 135
Inscription : dim. 07/déc./2008 9:32

Re: Combobox et texte affiché

Message par zaphod »

...
Dernière modification par zaphod le dim. 27/mai/2012 7:41, modifié 1 fois.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Combobox et texte affiché

Message par Anonyme2 »

zaphod a écrit :Salut,

peut être l'api : PathCompactPathEx ?

Merci zaphod, je pense que ça correspond à ce que je cherche.
Je vais faire des essais.

A+
Denis
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Combobox et texte affiché

Message par Patrick88 »

j'ai déjà vu ça sur certain programme, généralement le texte est tronqué mais affiché en entier dans une bulle d'aide (GadgetToolTip)

pat
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Combobox et texte affiché

Message par G-Rom »

Merci Chris, disons que je voulais utiliser les API.
Juste une question Denis , pourquoi utilisé des API dès lors que l'on peut s'en passer ?
imagine que l'année prochaine pour x ou y raison Microsoft change son API ( pour par exemple , forcer les dev , a passer sur une plateforme supérieur )
Comment peut tu géré cela surtout si tu as des centaines de sources à updaté ?

http://fr.wikipedia.org/wiki/Enfermemen ... C3%A9taire

C'est juste une question , pas besoin de trollé , c'est la réponse de Denis qui m'intéresse ( LSI & Jacobus aussi ;) )

@++
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Combobox et texte affiché

Message par Ar-S »

Je me permets de poser cette interrogation.
Les commandes natives PB équivalente à certaines API n'utilisent-elles pas elles aussi ces API ?
Si Grosoft modifiaient une API, les commandes PB seraient elles alors aussi compromises jusqu'à ce que les devs la re-programment ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Combobox et texte affiché

Message par Anonyme2 »

G-Rom a écrit :
Merci Chris, disons que je voulais utiliser les API.
Juste une question Denis , pourquoi utilisé des API dès lors que l'on peut s'en passer ?
imagine que l'année prochaine pour x ou y raison Microsoft change son API ( pour par exemple , forcer les dev , a passer sur une plateforme supérieur )
Comment peut tu géré cela surtout si tu as des centaines de sources à updaté ?

http://fr.wikipedia.org/wiki/Enfermemen ... C3%A9taire

C'est juste une question , pas besoin de trollé , c'est la réponse de Denis qui m'intéresse ( LSI & Jacobus aussi ;) )

@++
G-Rom a écrit :Juste une question Denis , pourquoi utilisé des API dès lors que l'on peut s'en passer ?
Pourquoi utiliser un tel portable alors que l'on peut s'en passer ?
Pourquoi utiliser un téléviseur alors que l'on peut s'en passer ?
Pourquoi utiliser une voiture alors que l'on peut s'en passer ?

Je n'oppose pas les API aux commandes natives de PB.
Il existe des milliers d'API éprouvées qui permettent de presque tout faire. Les utiliser permet aussi de comprendre comment Microsoft travaille. Cela réduit aussi le code final de l'executable.
En plus, ca permet de progresser un peu.
G-Rom a écrit :imagine que l'année prochaine pour x ou y raison Microsoft change son API ( pour par exemple , forcer les dev , a passer sur une plateforme supérieur )
Comment peut tu géré cela surtout si tu as des centaines de sources à updaté ?
Ce qu'il me semble (mais je ne connais pas l'ensemble des API) c'est que bien souvent Microsoft utilise des types de variables basées sur des structures, souvent ce sont ces structures qui changent avec les versions, pas les API. Cela ouvre pour la même API de nouvelles fonctionnalités. Mais MS développe aussi de nouvelles API mais la compatibilté de l'ancienne API avec le nouvel OS reste.
Pour moi, le plus difficile c'est de trouver l'API qui va bien dans la doc monstrueuse de MS, pas de l'utiliser, même si parfois on a mal à la tête et on gueule un coup parce que l'on y arrive pas.

Il est clair que si l'on veut un développement Windows, MAC, Linux, utiliser les API est possible mais entraine une compilation conditionnelle qui devient fastidieuse à gérer.

Pour finir, je pense qu'essayer de développer un logiciel en PB sous Windows sans utiliser les API devient vite difficile à faire (je ne parle pas de quelques centaines de lignes, mais de milliers).
De même, l'interception d'événements sur les gadgets reste limité, il faut prévoir les callback sous Windows.

A force d'utiliser les API d'énumération des ressources des fichiers (FindResource, FindResourceEx, LoadResource, LockResource, SizeofResource, BeginUpdateResource etc.) que je trouvais pénible au début, je me suis rendu compte plus tard que c'était franchement excellent comme système.
J'ai écris des fonctions similaires pour énumérer les fichiers au format ico et les fichiers librairie au format .icl NE pour PureIconManager. Ca marche franchement bien, cela permet de retrouver facilement les éléments du fichier que l'on recherche.

Ce que tu dis pour Microsoft est valable pour pour PB. Depuis l'an 2000 (c'est cette année là que j'ai découvert PB), les nombreuses versions de PB obligent parfois/souvent de changer son code pour qu'il fonctionne avec la nouvelle version. Certain sur le forum se souviennent peut-être qu'au début les constantes pouvaient évoluer, aujourd'hui c'est terminé. Il a fallu recoder tout les projets sur lesquels on travaillait. Des commandes PB disparaissent, d'autres évoluent et ce n'est pas toujours compatible d'une version à l'autre.

A+
Denis
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Combobox et texte affiché

Message par Kwai chang caine »

Je sais que je ne suis pas un reference, mais j'aime aussi les API, je suis donc tout d'accord avec DENIS 8)

C'est sur que pas mal de membres ici utilisent LINUX, voir MAC, et de ce fait sont obligé de se rapprocher le plus possible du natif pour que cela marche avec les deux OS

A contrario, beaucoup de membres arrivent du C, et donc de ce fait utilisent les API comme il le faisaient avec le C, mais en plus simple 8)

Pour ma part, je n'ai pas assez de capacité pour utiliser correctement LINUX ou MAC, j'ai deja du mal avec WINDOWS, alors comme je sais que je ne coderais que pour WINDOWS, utiliser les API est une evidence et meme parfois un confort :D
ARS a écrit :Les commandes natives PB équivalente à certaines API n'utilisent-elles pas elles aussi ces API ?
Si Grosoft modifiaient une API, les commandes PB seraient elles alors aussi compromises jusqu'à ce que les devs la re-programment ?
Je me suis aussi posé cette question tres interessante....est ce que derriere les commandes PB il y a des API ??? :roll:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre