AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Formulare an Stringgridgröße anpassen

Ein Thema von Delphi-Laie · begonnen am 28. Okt 2010 · letzter Beitrag vom 2. Nov 2010
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Mehrere Formulare an Stringgridgröße anpassen

  Alt 29. Okt 2010, 18:15
Was ist hier falsch an AutoSize?
Es sorgt dafür, dass alle visuellen Komponenten auf dem Formular so eng wie es grad geht eingeschlossen werden. War nicht ganz genau DAS gefragt?
Die Frage habe ich mir auch schon gestellt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#12

AW: Mehrere Formulare an Stringgridgröße anpassen

  Alt 29. Okt 2010, 22:33
Hallo hoika/Heiko! Wo hast Du das:

Delphi-Quellcode:
Unit FormTools;

XXX

procedure AdjustForm(theForm: TForm; theStringGrid: TStringGrid);
begin
  dein Code
her? In/ab welcher Delphiversion ist das zu haben?? Nicht einmal mein Turbodelphi kennt das. Das scheint aber genau das zu sein, was ich suche. Es gefiel mir von Anfang an auch am besten.

*******************

Autosize beim Forumular hilft übrigens nichts: Nicht nur, daß das Formular nicht mehr manuell zoombar ist, es ist natürlich auch nicht paßgenau, sondern zu klein: Sogar beide Scrollbalken des Stringgrids erscheinen. Keine Ahnung, was da "auto" gemacht wurde. Hineinprogrammierte Vorab-Intelligenz ist eben nicht immer so weitblickend, vorausschauend ausgelegt worden, daß sie später allen Anforderungen standhält.

******************

Hallo Bummi, auch Dir danke!

In folgendem Beispiel gehe ich mal davon aus daß colwith und rowheigth immer gleich sind, ansonsten halt drüberlaufen und rechnen:
Nein, sind sie nicht, sondern immer verschieden. Deshalb wollte ich es flexibel haben.

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if StringGrid1.width<(StringGrid1.colcount*(StringGrid1.Defaultcolwidth + 1) + 4) then
  StringGrid1.width:=(StringGrid1.colcount*(StringGrid1.Defaultcolwidth + 1) + 4);

  if StringGrid1.Height<(StringGrid1.Rowcount*(StringGrid1.DefaultRowHeight + 1) + 4) then
  StringGrid1.Height:=(StringGrid1.Rowcount*(StringGrid1.DefaultRowHeight + 1) + 4)


end;
Die Breite und Höhe eines StringGrids zu berechnen und daran - nach viel Ermitteln und Probieren - die Formulargröße pixelgenau so anzupassen, daß das Stringgrid ohne Scrollbalken auskommt, ist letztlich - ich meine das jetzt nicht abwertend - auch wieder nur eine Bastellösung (von der ich auch eine habe). Auch hier müßten jedesmal die Codezeilen erneut in den Quelltext eingefügt und wieder die Bezeichner entsprechend angepaßt werden.

Deshalb wäre eine Routine (wie hoika angedeutet) prima, aber mit OOP scheint es kaum zu funktionieren; höchstens mit einer der Formularklasse übergeordneten Klasse, in der eine solche Routine eingebaut wird, erscheint das möglich, aber daß ich so etwas hinbekomme (sofern es überhaupt möglich ist), ist nahezu ausgeschlossen.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#13

AW: Mehrere Formulare an Stringgridgröße anpassen

  Alt 29. Okt 2010, 22:51
Autosize gibts bei mir auch nicht. Was soll das denn nützen ? Ich erschlage die Breite des Stringgrids und die der Spalten mit einem Schlag.
Gruß
Hansa
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#14

AW: Mehrere Formulare an Stringgridgröße anpassen

  Alt 29. Okt 2010, 23:01
@Hansa: Möglich, dass das in älteren Versionen noch nicht vorhanden ist. Es tut das, was ich in einem vorigen Beitrag bereits schrieb.

Hallo hoika/Heiko! Wo hast Du das:
[...]
her?
Die Zeile "dein code" hätte ein entscheidender Hinweis sein können. Hoika wollte damit wohl sagen: Bau dir einfach eine eigene Methode, die ein beliebiges Formular und Grid entgegen nimmt, womit du diese eine Funktion für alle Formulare mit Grid verwenden könntest. Sowas spezielles wirst du kaum fertig finden...

Autosize beim Forumular hilft übrigens nichts:[...]
Ich habe AutoSize auf Formularen in etlichen Projekten völlig ohne solche Probleme benutzt. Manchmal ist es eben auch die Art und Weise der Verwendung, die die Funktion stört. Zum Beispiel sollte es mehr als offensichtlich sein, dass man auf einem AutoSize-Formular keine unmittelbaren Children mit anderen Alignments als alNone, und ggf. alCustom haben sollte. Das wäre z.B. eine Stelle zum mal nachsehen - wir haben deinen Code ja nicht hier.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#15

AW: Mehrere Formulare an Stringgridgröße anpassen

  Alt 29. Okt 2010, 23:52
Zitat:
Deshalb wäre eine Routine (wie hoika angedeutet) prima, aber mit OOP scheint es kaum zu funktionieren; höchstens mit einer der Formularklasse übergeordneten Klasse, in der eine solche Routine eingebaut wird, erscheint das möglich, aber daß ich so etwas hinbekomme (sofern es überhaupt möglich ist), ist nahezu ausgeschlossen.
Wenn Du so auf OOP stehst kannst Du entweder eine Klasse von TStringgrid ableiten und hier eine Property MachMichSoGrossDassIchKeineScrollbalkenbrauchenUnd ZiehMeinenParentMit:Boolean einbauen, spätestens hier muß Du aber wieder Code schreiben die Coulmnbreiten addieren, wenn Gitterlinen siohtbar sind deren Breite mit berechnen, das selbe für die Spalen und eine geeignete Stelle finden an der die Einstellugen bei Änderugen nachgezogen werden.

Oder Du hast schon in weiser Voraussicht Deine Formularen von einer Basisklasse abgeleitet (lässt sich auch nachrüsten) in der die Routine einmalig implementiert wird z.B. eine OnPaint Routine für Stringgrids

Und hier dann:
With TStringGrid(Sender) do .....

etc.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#16

AW: Mehrere Formulare an Stringgridgröße anpassen

  Alt 30. Okt 2010, 11:38
Die Eigenschaft "Autosize" gibt es ab Delphi 4.

Danke noch einmal für Eure Reaktionen!

Daß ich auf OOP stehe, kann ich nun beileibe nicht behaupten (sowohl mein Pseudonym als auch meine Ausführungen hier und sonstwo belegen das), aber ich werde mich noch einmal - unterstützt von Euren Hinweisen - in diese Sache hineinknien. Überhaupt, mangels echtem Interesse beschäftige ich mich im Bereich der Programmierung immer nur mit dem, was ich zur Lösung meines Problemes gerade benötige (der Weg ist für mich nicht das Ziel, sondern nur das Ziel selbst ist es).


Nochmals vielen Dank und viele Grüße!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: Mehrere Formulare an Stringgridgröße anpassen

  Alt 30. Okt 2010, 12:29
Hallo,

OOP.

Delphi-Quellcode:
unit FormTools;

interface

type
  TAutoSizeToolClass = class
    public
      class function AutoSizeForm(theForm: TForm; theStringGrid: TStringGrid);
  end;

Heiko
Heiko
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#18

AW: Mehrere Formulare an Stringgridgröße anpassen

  Alt 30. Okt 2010, 12:52
Hallo Hoika bzw. Heiko, danke!

Hallo,

OOP.

Delphi-Quellcode:
unit FormTools;

interface

type
  TAutoSizeToolClass = class
    public
      class function AutoSizeForm(theForm: TForm; theStringGrid: TStringGrid);
  end;

Heiko
Mit etwas ähnlichem versuchte ich mich auch, scheiterte aber: Ich leitete eine Formularklasse von TForm ab. Das Problem: Die Methode war nicht in der übergeordneten Klasse (TForm) sichtbar bzw. verfügbar, egal, wohin ich sie packte (Vererbung ist ja auch genaugenommen etwas, was nur die Kinder betrifft, deshalb meine Idee mit einer der TForm übergeordneten Klasse). Auch direkt in die TForm-Klasse eine Methode zu implementieren, führte mich nicht weiter.

Wird diese TAutoSizeToolClass-Klasse bzw. dessen Methode AutoSizeForm ohne Problem für die TForm-Klasse erreichbar sein? Oder gibt es da auch wieder etwas besonderes zu beachten?

Danke für die Geduld und Gruß!

Delphi-Laie
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#19

AW: Mehrere Formulare an Stringgridgröße anpassen

  Alt 30. Okt 2010, 13:16
Ich leitete eine Formularklasse von TForm ab.
...und das ist zum Scheitern verurteilt. Bzw. unnötig kompliziert. Mache eine Standardform mit dem Grid und schiebe den Krempel in die Objektablage. Da nimmst Du jetzt die Forms her und fertig (neu -> weitere). Der englische Begriff für Objektablage ist allerdings besser, als der deutsche : Form-Inheritance. Das verdeutlicht eher, um was es geht.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#20

AW: Mehrere Formulare an Stringgridgröße anpassen

  Alt 30. Okt 2010, 16:24
@Hansa
Ich teile Deine Meinung absolut nicht.
Jedes Projekt hat andere Anforderungen und keines meiner Projekt wird ohne Template bzw. mehre Vererbungsebenen an Templates erstellt.
Die Erstellung und Wartung der Templates ist trivial und jedes beinhaltet den für seine Ebene nötigen Maximalumfang an Funktionalität.
Auf diese Art können redundante Codeanschnitte weitestgehend vermieden werden und Funktionalitäten jederzeit nachgerüstet oder angepasst werden.
Wenn ich hierfür die Objektablage verwenden würde wäre diese 1. bis zum Platzen voll und viele Funktionen die erst in einem Projektrahmen zur Verfügung könnten gar nicht erst implementiert werden.

MfG
Thomas
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 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