Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

n00b_on_knees 17. Dez 2003 20:15


StringGrid Width mit Maus während Laufzeit verändern
 
Hallo miteinander!

Wie kann man mittels

Delphi-Quellcode:
sg1.DefaultColWidth:= ...;
während das Programm läuft, die Breite der Spalte des StringGrid verändern? Das ganze sollte mittels Mausklick passieren wie man es bei Programmen wie Excel gewohnt ist.

Wenn es mit einem anderem Befehl als dem obigen geht, natürlich bitte diesen.

Danke im Vorraus.
mfG.

Niels 17. Dez 2003 20:57

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

Du klickst auf das "+" im OI vor Options. Danach stellst du goColSizing auf TRUE und du kannst im Programm die Breite der Zellen ändern.

MfG Niels

[edit]
PS: wenn du goRowSizing auch auf TRUE machst kannste auch die Zeilenhöhe verändern.
[/edit]

Mamphil 2. Okt 2004 12:51

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

Ich wärme das hier mal auf mit einem kleinen Zusatz-Tipp:

Mit goRowSizing = true / goColSizing = true kann man nur die Spaltenbreiten über die "FixedRows" / "FixedCols" ändern (das sind die grauen Spalten- / Zeilenüberschriften.

Ich bin darüber gestolpert, weil ich die Breite durch Klick und Ziehen auf die Trennlinien der einfachen Felder ändern wollte - das funktioniert nicht.

Also: Mindestens Fixed[Rows|Cols] = 1 einstellen, damit man darüber die Breite bzw. Höhe verändern kann!

Mamphil

Sturmrider 8. Mai 2006 10:14

Re: StringGrid Width mit Maus während Laufzeit verändern
 
Hallo
Kann mir vielleicht nocheinmal jemand weiter helfen wie ich jetzt genau die Zellengröße für eine Spalte ändern kann? Ich habe lediglich Spalten mit Daten, keine Kopfzeile mit Überschriften.
Und nur mit goRowSizing = true / goColSizing = true lässt sich da leider nichts bewirken. Zumal ich die Zellspalten ja nicht von Hand verschieben möchte (was übrigens auch nicht geht), sondern sie von anfang an in einer gewissen Größe anzeigen. Wie geht das :cry: ?

Gruß Sturmrider

fkerber 8. Mai 2006 10:17

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

Dann hilft dir vielleicht das hier weiter:

Delphi-Quellcode:
stringgrid1.ColWidths[1]:=250;

danku 9. Mai 2006 16:53

Re: StringGrid Width mit Maus während Laufzeit verändern
 
kann man erreichen das bei 3spalten die letzten 2 enabled:=false gesetzt werden und die erste im editiermodus vorliegt?

Lannes 9. Mai 2006 19:27

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

beispielsweise kann man so keine Zellen in der 3ten Spalte(Index = 2) selectieren,
also auch nichts eintragen:
Delphi-Quellcode:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; Col, Row: Integer;
  var CanSelect: Boolean);
begin
  if Col = 2 then
    CanSelect := False
    else
      CanSelect := True;
end;
Und so können die Zellen der 3ten Spalte zwar selectiert werden,
aber es kann nichts eingegeben werden:
Delphi-Quellcode:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; Col, Row: Integer;
  var CanSelect: Boolean);
begin  
  if Col = 2 then
     StringGrid1.Options := StringGrid1.Options-[goEditing]
     else
       StringGrid1.Options := StringGrid1.Options+[goEditing];
end;

Sturmrider 9. Mai 2006 21:22

Re: StringGrid Width mit Maus während Laufzeit verändern
 
@fkerber
Vielen Dank :-D funktioniert einwandfrei. Ich habe es in eine FormActivate-procedure gepackt ^^ so, dass beim Starten des Progs. die Tabellen sofort angepasst werden. War nur etwas schwehr mit den Überschriften der Spalten, die ich extra, also nicht im StringGrid hatte...aber mit ein bischen herumprobieren hat auch das hinterher funktioniert ^^ DANKE nocheinmal!

danku 10. Mai 2006 14:58

Re: StringGrid Width mit Maus während Laufzeit verändern
 
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

danku 12. Mai 2006 14:01

Re: Automatisches Anpassen anhand Stringgrid weite
 
gehört indirekt zum topic:

ich will die länge eines tedit automatisch anhand einer tstringgrid text anpassen:

rename.Width:= length(fmformat.sgfiles.Cells[0,1]);
fmrename.width:= length(rename.text) + 200;

warum wird das tedit (rename.text) zur laufzeit zusammengeschoben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 Uhr.
Seite 1 von 2  1 2      

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