Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi StringGrid Width mit Maus während Laufzeit verändern (https://www.delphipraxis.net/13410-stringgrid-width-mit-maus-waehrend-laufzeit-veraendern.html)

danku 14. Mai 2006 11:18

Re: StringGrid Width mit Maus während Laufzeit verändern
 
hat einer einen tipp für mich?

Hawkeye219 14. Mai 2006 11:25

Re: StringGrid Width mit Maus während Laufzeit verändern
 
Hallo danku,

Mit Length erfragst du die Länge des Textes in Zeichen, d.h. die Anzahl Zeichen im Text. Möchtest du die Breite des Edit-Controls ändern, benötigst du die Breite in Pixel. Die Breite einer Spalte kann über Delphi-Referenz durchsuchenTStringGrid.ColWidths ermittelt werden, die Pixelbreite eines Textes über Delphi-Referenz durchsuchenTCanvas.TextWidth.

Gruß Hawkeye

danku 14. Mai 2006 14:41

Re: StringGrid Width mit Maus während Laufzeit verändern
 
habs mal getestet:
aber ganz so gehts nicht:

Delphi-Quellcode:

//Editfeld
rename.Width:= (fmformat.sgfiles.Canvas.TextWidth(fmformat.sgfiles.cells[0,1])); // funzt nicht 100% da die width des tstringgrids nicht immer übernommen wird

//Formularwidth
fmrename.width:= (canvas.TextWidth(rename.text));
// problem: die voreingestellte width des tedit wird zur laufzeit angezeigt, aber eben nicht die virtuelle width, d.h. die width von der länge des textes aus der tstringgrid

danku 16. Mai 2006 11:27

Re: StringGrid Width mit Maus während Laufzeit verändern
 
hast du vll. noch einen anderen vorschlag?

Lannes 16. Mai 2006 13:33

Re: StringGrid Width mit Maus während Laufzeit verändern
 
Hallo,
Zitat:

Zitat von danku
wenn man in spalte 1 eine zelle editiert und dann in eine zelle in der 2.spalte klickt ist diese auch editierbar. warum?
Delphi-Quellcode:
if ACol = 0 then begin
     sgfiles.Options := sgfiles.Options+[goEditing];
     sgfiles.Options := sgfiles.Options-[goRowSelect];
     end
     else begin
       sgfiles.Options := sgfiles.Options-[goEditing];
       sgfiles.Options := sgfiles.Options+[goRowSelect];
       end

Durch das Setzen von goRowSelect wird die Selection verändert und OnSelectCell erneut mit Col = 0 ausgelöst.
Eine Lösung für die Kombination goEditing/goRowSelect fällt mir dazu nicht ein. :|

Darin könnten auch Deine Probleme mit TextWidth begründet sein.
Hast Du mal überprüft ob Dein TextWidth-Code auf die richtige Zelle zugreift?

Und hat Dein Edit die gleiche Font-Einstellung wie das StringGrid?
Denn sgfiles.Canvas.TextWidth berechnet auf der Grundlage von StringGrid.Font.

danku 16. Mai 2006 17:27

Re: StringGrid Width mit Maus während Laufzeit verändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
jo die stringgrid und das editfeld haben beide die gleichen fonts.

endungsproblem bei spaltenbreite:
---------------------------------
sobald man doppelclickt auf die stringgrid öffnet sich ja das formular,
indem dann der inhalt der angeklickten zelle im tedit steht. (der komplette name, weil die filenames bedingt durch die spaltenbreite gekürzt werden)

wenn es ein kurzer name des filenames ist, kann man das ja ohne probs ändern,
aber bei längeren gibts stress.
bspw. ändert man einen filename per doppelclicken auf die stringgrid, wobei man in dem tedit im geöffneten formular die letzten 3zeichen bspw. löscht.
es wird zwar der eintrag von tedit übernommen und in die stringgrid (angeklickte zelle) geschrieben

Delphi-Quellcode:
endung:=copy(fmformat.sgfiles.Cells[0,1],pos('.',fmformat.sgfiles.cells[0,1]),length('.')+3);
fmformat.sgfiles.cells[0,1]:= (rename.text)+endung;
aber statt der endung steht auf einmal '+Ja'.
kann mir einer sagen warum?

das problem tritt immer auf, sobald die filenames über die spaltenbreite hinausragen.

Lannes 16. Mai 2006 21:55

Re: StringGrid Width mit Maus während Laufzeit verändern
 
Hallo,

hat length('.') in Deinem Code einen tieferen Sinn :roll: der '.' hat immer die Länge 1, oder?

Bzgl. Endung einer Datei, schau Dir mal die Funktion Delphi-Referenz durchsuchenExtractFileExt an.
Zitat:

Zitat von danku
aber statt der endung steht auf einmal '+Ja'.
kann mir einer sagen warum?
das problem tritt immer auf, sobald die filenames über die spaltenbreite hinausragen.

hat mit der Spaltenbreite wohl eher nichts zu tun. Das '+Ja' ist im Dateinamen enthalten, befindet sich davor eventuell auch ein Punkt(kann ich auf Deinem Bild nicht erkennen)?
Innerhalb Deines Codes suchst Du mit Pos nach dem ersten Punkt und kopierst dann 4 Zeichen als Endung ---> '.+ja'

Ps.: Deine Fragen weichen immer mehr vom Thema ab,
wäre besser wenn Du in solchen Fällen dafür einen neuen Thread eröffnest.

Mods: Eventuell können ja die letzten Beiträge abgetrennt werden?

fkerber 16. Mai 2006 22:16

Re: StringGrid Width mit Maus während Laufzeit verändern
 
Hi!

Jepp, soweit ich den Screenshot richtig deute, steht da feat.+Jazz


Ciao Frederic

danku 17. Mai 2006 13:41

Re: StringGrid Width mit Maus während Laufzeit verändern
 
Zitat:

Zitat von fkerber
Hi!

Jepp, soweit ich den Screenshot richtig deute, steht da feat.+Jazz


Ciao Frederic

ja und? was wills du damit sagen?
das thema hat indirekt mit dem topic zutun, zumal es ja auch um stringgrid während laufzeit geht.


Zitat:

Zitat von Lannes
hat mit der Spaltenbreite wohl eher nichts zu tun. Das '+Ja' ist im Dateinamen enthalten, befindet sich davor eventuell auch ein Punkt(kann ich auf Deinem Bild nicht erkennen)?

das kann man doch sehen. :zwinker:
ja da ist einer. wie gesagt der setzt anstatt der endung(.mp3) eben das 'Ja'

hab das problem mit extractfileext gelöst :thumb: :pale: was es in delphi alles gibt :cyclops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz