SpecDialogs
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
SpecDialogs
Hallo liebe Lazarus Gemeinde,
ich habe gerade für mich eine kleine Unit geschrieben, könnte vielleicht noch verbessert werden, läuft aber recht gut.
Mein Antrieb war, dass ich immer wieder einmal mehr als nur einen Text strukturiert auf einer Form darstellen wollte wie z.B. beim Showmessage.
Das Form wird generiert in der unit specdialogs.pas
Damit sich keiner die Mühe machen muss die unit komplett zu lesen habe ich ein kleines Form in einem Projekt erstellt, welches die specdialogs nutzt.
Ich benutze jetzt diese unit um mir z.B. folgendes anzuzeigen.
hier der Link zum Download:
Hier der Link zum Download
Wenn ihr Anregungen, oder eine bessere Variante habt, ich bin immer bereit zu lernen.
Viel Spaß beim Testen.
Ach ja, ich habe ein wenig mit Kommentaren gegeizt
Mit freundlichem Gruß
Ralph
ich habe gerade für mich eine kleine Unit geschrieben, könnte vielleicht noch verbessert werden, läuft aber recht gut.
Mein Antrieb war, dass ich immer wieder einmal mehr als nur einen Text strukturiert auf einer Form darstellen wollte wie z.B. beim Showmessage.
Das Form wird generiert in der unit specdialogs.pas
Damit sich keiner die Mühe machen muss die unit komplett zu lesen habe ich ein kleines Form in einem Projekt erstellt, welches die specdialogs nutzt.
Ich benutze jetzt diese unit um mir z.B. folgendes anzuzeigen.
hier der Link zum Download:
Hier der Link zum Download
Wenn ihr Anregungen, oder eine bessere Variante habt, ich bin immer bereit zu lernen.
Viel Spaß beim Testen.
Ach ja, ich habe ein wenig mit Kommentaren gegeizt
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
- corpsman
- Lazarusforum e. V.
- Beiträge: 1498
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: SpecDialogs
An sich siehts cool aus, auch wenn ich gerade nicht weis wofür ich das Ding nutzen sollte.
Eine kleine Verbesserung hätte ich aber.
Es sieht so aus, als sollte dieses Ding ein Dialog sein.
Eine Option Maximieren, bzw. minimieren finde ich dann nicht angebracht.
Auch hast du keine Standard Selektierung auf den Buttons ( zumindest nicht auf dem Screenshot ), welcher Wert wird dann angenommen wenn ich auf das "X" drücke ?
Eine kleine Verbesserung hätte ich aber.
Es sieht so aus, als sollte dieses Ding ein Dialog sein.
Eine Option Maximieren, bzw. minimieren finde ich dann nicht angebracht.
Auch hast du keine Standard Selektierung auf den Buttons ( zumindest nicht auf dem Screenshot ), welcher Wert wird dann angenommen wenn ich auf das "X" drücke ?
--
Just try it
Just try it
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: SpecDialogs
Hallo Corpsman,
Das Ding soll ein Dialog sein
Aber, wenn Deine Darzustellende Tabelle größer ist, als dein Monitor darstellen kann, dann ist es sinnvoll, das Fenster auch mal kleiner machen zu können, um etwas zu überprüfen.
Stell einfach mal das Array auf 100 Zeilen und Spalten ein, dann kannst Du verstehen, was ich meine.
Das mit dem X Drücken habe ich nicht verstanden?
Aber, wenn Du bei dem Caption des Buttons z.B. &OK einträgst, dann wird der Button mit o ausgelöst und bei O&K mitK.
Mit freundlichem Gruß
Ralph
Das Ding soll ein Dialog sein
Aber, wenn Deine Darzustellende Tabelle größer ist, als dein Monitor darstellen kann, dann ist es sinnvoll, das Fenster auch mal kleiner machen zu können, um etwas zu überprüfen.
Stell einfach mal das Array auf 100 Zeilen und Spalten ein, dann kannst Du verstehen, was ich meine.
Das mit dem X Drücken habe ich nicht verstanden?
Aber, wenn Du bei dem Caption des Buttons z.B. &OK einträgst, dann wird der Button mit o ausgelöst und bei O&K mitK.
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: SpecDialogs
Vom bild her siehts cool aus.
Das mit dem X ist das X was oben rechts (oder links) steht und womit du dein Browser beenden kannst, das X meint der...
Das mit dem X ist das X was oben rechts (oder links) steht und womit du dein Browser beenden kannst, das X meint der...
Code: Alles auswählen
Signatur := nil;
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: SpecDialogs
Hallo,
also, das mit dem X ist folgendermaßen:
Wenn du einen Button betätigst, dann bekommst du vom 1.-bis zum letzten Button 1..n zurück. Bei X bekommst du eine 0.
Mit freundlichem Gruß
Ralph
also, das mit dem X ist folgendermaßen:
Wenn du einen Button betätigst, dann bekommst du vom 1.-bis zum letzten Button 1..n zurück. Bei X bekommst du eine 0.
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: SpecDialogs
Ralph59 hat geschrieben:Wenn du einen Button betätigst, dann bekommst du vom 1.-bis zum letzten Button 1..n zurück. Bei X bekommst du eine 0.
Für modal (d.h. alle anderen deaktivieren) angezeigte Fenster (auch Dialoge genannt) gibt es TModalResult und einige vordefinierte Konstanten wie mrOk, mrYes, mrCancel, usw.
Wenn du diese nutzt, wird man deine Unit schneller und effizienter nutzen können, da diese schon aus der LCL und VCL bekannt sind.
Mit TBitBtn.Kind kann man vordefinierte "Arten" des TBitBtn nutzen. Damit kann man ganz schnell passende Daten einstellen (Bild passend zum Theme des Widgetsets, passender Text und passendes ModalResult).
Tut mir jetzt Leid, dir das sagen zu müssen, aber du hast dir in diesen beiden Punkten unnötig Arbeit gemacht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: SpecDialogs
Hallo Socke,
du bist aber noch lange auf.
das braucht dir doch nicht leid zu tun, ich bitte ja sogar darum, wie soll ich denn sonst lernen können, wenn nicht von euch allen
Das mit den mrOk, mrYes, mrCancel, usw. halte ich für sinnvoll, und ist ja auch keine besondere Arbeit.
Aber eine Frage, kann ich den Buttons dann auch eingene Labels verpassen?
so wie Abbrechen, oder ich möchte hier jetzt..., ?
Mit freundlichem Gruß
Ralph
du bist aber noch lange auf.
das braucht dir doch nicht leid zu tun, ich bitte ja sogar darum, wie soll ich denn sonst lernen können, wenn nicht von euch allen
Das mit den mrOk, mrYes, mrCancel, usw. halte ich für sinnvoll, und ist ja auch keine besondere Arbeit.
Aber eine Frage, kann ich den Buttons dann auch eingene Labels verpassen?
so wie Abbrechen, oder ich möchte hier jetzt..., ?
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: SpecDialogs
Ralph59 hat geschrieben:du bist aber noch lange auf.
Leider manchmal viel zu lange....
Ralph59 hat geschrieben:Aber eine Frage, kann ich den Buttons dann auch eingene Labels verpassen?
so wie Abbrechen, oder ich möchte hier jetzt..., ?
Klar, TBitBtn setzt nur Standardwerte, die natürlich wieder verändert werden können. Wenn man zu viel verändert, kann man sich diese Zeile natürlich auch sparen.
Code: Alles auswählen
btn := TBitBtn.Create(Self)
btn.Kind := bkYes;
btn.Caption := 'Hallo';
btn.Glyph.Assign(mybitmap);
btn.ModalResult := 25;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: SpecDialogs
Hm,
das heißt, erstellen muß ich das Form, den optionalen Label, das Grid und die Bitbuttons eh.
Bei der Zuweisung der Buttons könnte ich der einfachheit halber und aus Verständnisgründen auf TBitBtnKind zurückgreifen
Also könnte ich die Zeile
ersatzlos streichen ,
die funktionen im Aufruf ändern s.u.
einige kleinere Anpassungen machen und wäre zum mindest einfacher verständlich.
Kann ich das gleiche auch mit den Standard Images machen, die ich in der Form verwende?
und oder
Kann ich den ganzen kruscht, den ich da fabriziert habe verwerfen und ein standard Formular verwenden?
Wie auch immer, ich bin dankbar für diese Diskussion.
Mit freundlichem Gruß
Ralph
das heißt, erstellen muß ich das Form, den optionalen Label, das Grid und die Bitbuttons eh.
Bei der Zuweisung der Buttons könnte ich der einfachheit halber und aus Verständnisgründen auf TBitBtnKind zurückgreifen
Also könnte ich die Zeile
Code: Alles auswählen
TmyButtons = (Bt_ok, Bt_Cancel, Bt_Help, Bt_Yes, Bt_No, Bt_Close, Bt_Abort, Bt_Retry, Bt_Ignore, Bt_All, Bt_YesToall, Bt_NoToAll, Bt_Unlock, Bt_User ) ;
ersatzlos streichen ,
die funktionen im Aufruf ändern s.u.
Code: Alles auswählen
function ShowInfoGrid(
const StrGridToShow: TStringStringArray;
const myButton: Array of TBitBtnKind): integer overload;
einige kleinere Anpassungen machen und wäre zum mindest einfacher verständlich.
Kann ich das gleiche auch mit den Standard Images machen, die ich in der Form verwende?
und oder
Kann ich den ganzen kruscht, den ich da fabriziert habe verwerfen und ein standard Formular verwenden?
Wie auch immer, ich bin dankbar für diese Diskussion.
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
-
- Lazarusforum e. V.
- Beiträge: 7180
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: SpecDialogs
Ich möchte ja nichts sagen, aber das "Ding" sieht für mich aus wie der OI von Lazarus. Wäre es nicht einfacher die OI Komponente von Lazarus zu nutzen? Die Verwendung ist sehr leicht.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: SpecDialogs
Hallo
@Pluto
Wie wird die Komponente genutzt, oder welche unit wird verwendet, vieleicht ist es ja wirklich sinnvoller diese zu nutzen, ich kenne diese jedoch nicht.
Vielleicht hast du ja einen Link
ok, brauche keinen Link mehr du meintest den ObjectInspector, hm ich lese gerade mal nach.
Mit freundlichem Gruß
Ralph
@Pluto
Ich möchte ja nichts sagen, aber das "Ding" sieht für mich aus wie der OI von Lazarus. Wäre es nicht einfacher die OI Komponente von Lazarus zu nutzen? Die Verwendung ist sehr leicht.
Wie wird die Komponente genutzt, oder welche unit wird verwendet, vieleicht ist es ja wirklich sinnvoller diese zu nutzen, ich kenne diese jedoch nicht.
Vielleicht hast du ja einen Link
ok, brauche keinen Link mehr du meintest den ObjectInspector, hm ich lese gerade mal nach.
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
-
- Lazarusforum e. V.
- Beiträge: 7180
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: SpecDialogs
Du musst nur die RTTI Komponenten installieren oder verstehe ich den Sinn deines Dialoges nicht richtig?
Du brauchst einzelne Klassen. Dort musst du Eigenschaften Verwenden die im Published Bereich sind. Du kannst damit sogar eigene OI-Editoren erstellen. habe ich schon mal gemacht vor ca drei Jahren*G*. Beispiele findest du nur im Code vom OI.
Vielleicht kannst du diese Komponenten ja verwenden. Jedoch ist sie auch etwas "Altmodisch", wenn man sich den OI von Delphi anschaut. Ich hatte sogar mal eine eigene Angefangen es aber dann doch sein gelassen...
Du brauchst einzelne Klassen. Dort musst du Eigenschaften Verwenden die im Published Bereich sind. Du kannst damit sogar eigene OI-Editoren erstellen. habe ich schon mal gemacht vor ca drei Jahren*G*. Beispiele findest du nur im Code vom OI.
Vielleicht kannst du diese Komponenten ja verwenden. Jedoch ist sie auch etwas "Altmodisch", wenn man sich den OI von Delphi anschaut. Ich hatte sogar mal eine eigene Angefangen es aber dann doch sein gelassen...
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: SpecDialogs
Hallo,
ich werde dann mal die RTTI Komponenten in meiner Testumgebung installieren.
Aber hier eine kleine Beschreibung:
Manchmal möchte ich mir einige Teile einer Tabelle oder verschiedene Informationen gleichzeitig anzeigen lassen, und dass mit einem schnellen unkomplizierten Aufruf. Das kann im geringstenfall
dann der Aufruf:
kann aber auch ein zusätzliches Label oder unterschiedliche Images anzeigen.
s. hier
wobei dann der Aufruf folgendermaßen aussehen kann:
Natürlich muss man das Array hier ArrayInfo erst einmal mit Daten füllen. In meinem Beispiel habe ich das mit
getan.
Mit freundlichem Gruß
Ralph
ich werde dann mal die RTTI Komponenten in meiner Testumgebung installieren.
Aber hier eine kleine Beschreibung:
Manchmal möchte ich mir einige Teile einer Tabelle oder verschiedene Informationen gleichzeitig anzeigen lassen, und dass mit einem schnellen unkomplizierten Aufruf. Das kann im geringstenfall
dann der Aufruf:
Code: Alles auswählen
ShowInfoGrid(ArrayInfo, [Bt_ok]);
kann aber auch ein zusätzliches Label oder unterschiedliche Images anzeigen.
s. hier
wobei dann der Aufruf folgendermaßen aussehen kann:
Code: Alles auswählen
i:=ShowInfoGrid('Hallo Welt, ich bin ein Text', ArrayInfo, [Bt_ok]);
if i=1 then...
Natürlich muss man das Array hier ArrayInfo erst einmal mit Daten füllen. In meinem Beispiel habe ich das mit
Code: Alles auswählen
var
cArr :Array of Array of String;
begin
SetLength(cArr, 100);
for i := 0 to High(cArr) do
SetLength(cArr[i], 5);
for i := 0 to High(cArr) do
for y := 0 to High(cArr[i]) do
cArr[i,y] := ' Row: ' + IntToStr(i) +', Col: ' + IntToStr(y) +' ';
...
getan.
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
-
- Lazarusforum e. V.
- Beiträge: 7180
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: SpecDialogs
Sollte auch gehen. Theoretisch. Du müsstest die OI Komponente ja "nur" auf ein eigenes Dialog hinzufügen.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: SpecDialogs
Hallo Pluto,
ist es dann noch sinnvoll meine Unit nicht zu nutzen?
wo bekomme ich die RTTI oder auch andere Komonenten ?
Gibt es hierfür auch eine globale SVN wie http://svn.freepascal.org/svn/lazarus/
Mit freundlichem Gruß
Ralph
ist es dann noch sinnvoll meine Unit nicht zu nutzen?
wo bekomme ich die RTTI oder auch andere Komonenten ?
Gibt es hierfür auch eine globale SVN wie http://svn.freepascal.org/svn/lazarus/
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.