Afficher le contenu d'un .txt dans un TMemo - Delphi/Pascal - Programmation
Marsh Posté le 16-01-2007 à 11:30:49
El zozo was here
Spoiler : Mais c'est vrai que c'est un peu mort |
Pour le problème n°1, le plus simple (de loin) me parait etre de créer une colonne Blob dans ta base (Type "TEXT" en My SQL ou en MS SQL Server, mais je sais pas si c'est un type "officiel" en SQL) et d'y associer un controle TDBMemo.
Sinon, une solution "de haute voltige" (et surtout adaptable pour n'importe quel cas) est d'utiliser les TFieldDataLink.
DataFieldLink := TFieldDataLink.Create;
DataFieldLink.fieldname := NomChamp;
DataFieldLink.DataSource := Datasource;
DataFieldLink.Control := MonMemo;
DatafieldLink.OnDataChange := RemplirMemo; //une methode de type TNotifyEvent
Ainsi, une modfication du champ du dataset lié au datasource (qui se retrouve lui mème lié au Memo) déclenchera la procédure RemplirMemo.
Marsh Posté le 16-01-2007 à 13:50:13
Enfin quelqu'un !
J'ai pas tout compris à tes conseils, vu que je suis débutante, mais en tout cas je vais tenter de tatonner pour mettre ça en application. Merci !
Marsh Posté le 16-01-2007 à 15:55:24
Faut positiver, j'apprends à me débrouiller par moi même au moins...
Marsh Posté le 16-01-2007 à 19:02:55
Arf!!! Le probleme de ce forum, c'est aussi que c'est bouré de débutant... forcement, il reste pas grand monde pour repondre aux question.. alors progresse vite
Bon... Tu sais te servir des controls du genre TDBEdit?
Si oui, TDBMemo, ca marche de la meme façon sauf que le champ corespondant dans la base est du type TEXT ou équivalent(une variable texte pouvant faire plusieur lignes) ce qui supose que ta base suporte ce type. Si je me rapelle bien, n'est pas le cas de Paradox.
Si tu ne sais pas te servir d'un TDBEdit, ben euh... tatonne un peu (c'est dans l'onglet DBControl)
-------------------------
Pour la solution avec le DataFieldLink, c'est un peut plus pointu (le code est court, mais si on le comprend, c'est mieu). Mais si tu veut absolument utiliser des memo avec une base de donnée ne sachant pas les gerer, c'est la méthode la plus propre et la plus réutilisable (j'ai pas dit la plus simple).
En gros, tu utilise un objet de type TDataFieldLink qui a pour fonction de surveiller un champ de la base de donnée. Quand ce champ est modifié (quelle que soit la source de la modification), cet objet appele la méthode OnDataChange.
La subtilité, c'est que OnDataChange n'est en fait pas une "vrai" méthode, mais une variable de type méthode (plus exactement de type TNotifyEvent).
Il faut donc déclarer une méthode (au niveau du TForm1, par exemple) avec la mème "signature", puis l'affecter à OnDataChange et là, miracle : sans que tu n'ai a programmer quoi que ce soit, dès que le champ change (donc, sur un next, un open, un Previous, un Close, voire un Post), la méthode sera appelée.
Grosso modo, ça donne (j'ai pas de Delphi sous la main pour vérifier, mais n'hésite pas à te balader dans l'aide en ligne):
TForm1 |
Et que l'esprit du grand Anders Hejlsberg t'acompagne, ma petite
Marsh Posté le 17-01-2007 à 10:59:02
Salut El Zozo (et pensée pour l'esprit d'Anders Hejlsberg, s'il traine dans le coin (il est pas mort, nan ?))
(Salut aussi à toi qui erre sur ce post, si tu existes)
Je viens présenter mon pb du jour : j'ai des enregistrements que je veux pouvoir modifier.
C'est à dire que j'affiche dans des edits ce qui correspond à un enregistrement, et que je peux changer mes trucs. L'idéal serait que quand je clique sur 'enregistrer les changements', ben ça les enregistre.
D'où la question : comment que je fais pour me positionner dessus, et pour pouvoir modif la valeur des champs ?
Et une autre question : pourquoi j'arrive pas à trouver ces infos en cherchant sur le net ? Je sais pas me servir de l'aide ? Ou alors je suis trop habituée au php pour lequel on trouve plein d'infos en ligne assez facilement ? Pire, je suis neuneu ?!??
Marsh Posté le 17-01-2007 à 12:25:30
Moi z'veux bien aider, mais mets y un peu du tien
1) nouveau probleme => nouveau sujet
2)Utilise un terme un peu plus prècis que "enregistement" . Parle tu d'un enregistrement Pascal(type record), d'un enregistrement dans un fichier (file of record) ou d'une ligne dans une table relationnelle?
3)Pour éviter les ambiguité, utilise tant que possible les nom exact des type utilisés. Quant tu dit que tu affiche dans "des edits", tu parle de controls de type TEdit ou TDBEdit? Si c'est TDBEdit, il suffit d'une commande MonDataset.post (ou MonDataset est le dataset lié au TDBEdit).
Et ouai, c'est comme ça : j'suis un vieu con
Pour l'aide de Delphi, une raison pour laquelle on ne trouve pas de site contenant l'aide à proprement parler, c'est que l'aide de Delphi (la touche F1 est ton amie) est très bonne. Ca doit etre ta première source d'info.
La raison pour laquelle on ne trouve pas de tutorial sur le net... la c'est domage
Marsh Posté le 20-01-2007 à 13:26:08
el zozo a écrit : |
Salut à vous
ce que je trouve dommage c'est qu'il n'y a pas beaucoup d'exemple dans l'aide
certe c'est hyper complet mais quand on débute et qu'on voit "appellez la méthode de classe héritée de Tclecaillon"* et bah ça fait peur, avouez qu'il faut être un debutant expérimenté lol, alors qu'une ligne de code c'est souvent bien plus parlant
faut surtout pas oublier le guide de Frédéric BEAULIEU http://fbeaulieu.developpez.com/guide/index.html
* faut pas chercher ça veut rien dire
Marsh Posté le 14-01-2007 à 11:12:36
Bien bien bien...
Y'a pas à dire, le Delphi c'est pas trop in, hein, comme langage...
En PHP, y'a plus de vie sur les forums...
Comme je sais jamais comment on vire un message, j'en suis donc à la troisième édition de celui ci, pour mon troisième pb. En l'occurence, c'est plutôt une interrogation.
En fait, j'ai une table que je vais remplir grace à un formulaire. Jusque là tout va bien. Seulement, le truc qui m'interroge un peu, c'est que je veux qu'un des champs de ce formulaire soit en fait un petit texte qu'on peut taper. Je pense donc enregistrer ce texte dans un dossier du style .txt, parce que sinon il me semble qu'on est limité à 255 caractères, puis ça ferait une base trop lourde t'façons.
C'est à dire que quand on valide le formulaire, il faudrait que chaque champ enregistre ce qui le concerne, et qu'en même temps un (l'id de l'enregistrement).txt soit créé pour le petit texte associé. Il s'agirait ensuite de pouvoir l'afficher, quand dans le prog on veut afficher les enregistrements.
Des idées ? Des pistes ? Je pense pouvoir peut-être me débrouiller pour l'enregistrement, mais je sais pas trop comment faire pour pouvoir afficher ensuite
Merci d'avance, si jamais je découvre que je ne suis pas la seule personne à oser m'aventurer dans la partie Delphi du forum
Nan mais sérieux, c'est mort à ce point le Delphi ?
Même pas un message d'un inconnu style "Machin was here", tel jour
Bon, un pb en plus, si quelqu'un a une solution miracle, parce que j'en trouve pas. J'ai deux tables qui ont des index secondaires. Leur nom fait genre une dizaine de caractère ou un peu plus pour chacun.
Seulement là, ma troisième table est racalcitrante. Pas moyen de créer un seul index parce que "File name is too long for a Paradox version 5.0 table". Seulement même quand je tente un truc à trois pov caractères, il me jette.
Est-ce que par miracle, quelqu'un lira ce message ? Est-ce que par un miracle encore plus grand, quelqu'un pourra y répondre ?
Message édité par $temp le 16-01-2007 à 10:58:36