Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stringgrid auf Form positionieren ? (https://www.delphipraxis.net/54292-stringgrid-auf-form-positionieren.html)

Hansa 1. Okt 2005 02:08


Stringgrid auf Form positionieren ?
 
Hi,

ich habe hier ein Stringgrid und das muß auf die Form passen, ohne Scrollbalken. Bzw. wenn es überhaupt drauf paßt. Es geht also darum, eventuell die Form zu vergrößern, so weit wie möglich, um das Stringgrid noch unterzubringen. Eventuell kann die Form ja auch nach links verschoben werden um Platz zu schaffen und dann eben vergrößern.

Jetzt ist das ganze allerdings etwas verwirrend, denn die Spalten des Grids werden ert im Programm ermittelt (also die Anzahl und Breite). Und wie sieht es da mit den vertikalen Linien aus ? Zählen die bei ColWidth mit oder nicht ?

Habe mal im Nebel rumgestochert :

Delphi-Quellcode:
var i,
    GridWidth : integer;
begin
  GridWidth := 0;
  for i := 0 to sg.ColCount - 1 do
    GridWidth := GridWidth + sg.ColWidths [i];
showmessage ('sg '+IntToStr (sg.Width)+' gridwith '+IntToStr (GridWidth));
// + ' Left '+ IntToStr (sgArtNr.Left));
  sg.Width := GridWidth;
  if GridWidth + sg.Left > Width then
    Width := Left + GridWidth + 10;
end;
Wie siehts aus mit dem Left von der Form und dem Grid ? Hoffe mal, daß das einer schon gemacht hat, weil die OH nicht viel hergibt.

alzaimar 1. Okt 2005 12:50

Re: Stringgrid auf Form positionieren ?
 
Probiers doch aus.
Delphi-Quellcode:
StringGrid.Width := CalcWidth (StringGrid);

mschaefer 1. Okt 2005 13:03

Re: Stringgrid auf Form positionieren ?
 
Hallo Hansa,

also ich hatte mal ein ähnliches Problem mit einem DBGrid und irgendwie hat das Smart dann auch bekommen und damit gibt es einen Download dazu in der Delphipraxis: DBGrid-FormResize.

Grüße aus dem verregneten Hannover

// Martin

Hansa 1. Okt 2005 13:54

Re: Stringgrid auf Form positionieren ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Thx Martin,

ich muß allerdings erst noch folgendes klären :

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var i : integer;
begin
  StringGrid1.ColWidths [0] := StringGrid1.Canvas.TextWidth(StringGrid1.Cells[0,0]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.Cells [0,0] := '1234567890';
end;
Wieso wird in dem Grid nur 1234567 angezeigt ? :shock: Siehe Anhang.

mschaefer 1. Okt 2005 14:24

Re: Stringgrid auf Form positionieren ?
 
Hansa, habe Deine keine wirklich gute Idee. Würde den Textwidth-Wert jetzt einfach mit 1.2 multiplizieren und dasErgebnis
dann in ein Round setzen um auf den Integerwert zu kommen. Irgendwie arbeitet die Textwidth Funktion da nicht sauber.

Grüße // Martin

kiar 1. Okt 2005 14:29

Re: Stringgrid auf Form positionieren ?
 
Hallo Hansa,

warum nicht so:
Delphi-Quellcode:
Stringgrid1.Colwidths[0]:= Length(Stringgrid.cells[0,0] * font.size;
obwohl ich sagen muss, das ich die datei nicht runtergeladen habe.

raik

Hansa 1. Okt 2005 14:52

Re: Stringgrid auf Form positionieren ?
 
Halber Treffer, aber eben nur halb. :mrgreen:

Delphi-Quellcode:
Stringgrid1.Colwidths[0]:= Length(Stringgrid1.cells[0,0]) * (StringGrid1.font.size-1)+4;
Abschneiden kann ich damit jetzt nichts mehr.

Pfoto 1. Okt 2005 16:18

Schau mal auf den Link hier...
 
http://www.swissdelphicenter.ch/de/showcode.php?id=1717

Thema "die Spaltenbreite eines TDBGrid automatisch anpassen"
Passt jedoch nicht die Spalte nach Textweite an, sondern insgesamt.

Vielleicht findest Du ja dort trotzdem brauchbare Infos.

Gruß
Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr.

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