Buttons per Programm entfernen [solved]
-
- Beiträge: 131
- Registriert: So 20. Jul 2014, 10:27
- OS, Lazarus, FPC: kubuntu, raspbian, laz 1.2 / 0.9 microcontroller
- CPU-Target: 8-64 bit
- Wohnort: bodensee
- Kontaktdaten:
Buttons per Programm entfernen [solved]
hi,
ich hab ne form in der ich 12 spalten buttons hab, darunter sind je tag ein button, also feb weniger und 30/31 wechsel
die buttons hab ich von TButton abgeleitet und per programm erstellt. nun sollte ich die buttons beim umschalten zu nem anderen jahr am besten entfernen und neu erstellen.
hat jemand ne idee wie ich die butttons entfernen kann ? (oder weiss jemand ne sache in der form die ich aufrufe und die dann alle bttons auch aufrufen, also dass ich die procedure des buttons (oder so was) mit destroy ueberschreiben kann ???)
gruss und dank
w
ich hab ne form in der ich 12 spalten buttons hab, darunter sind je tag ein button, also feb weniger und 30/31 wechsel
die buttons hab ich von TButton abgeleitet und per programm erstellt. nun sollte ich die buttons beim umschalten zu nem anderen jahr am besten entfernen und neu erstellen.
hat jemand ne idee wie ich die butttons entfernen kann ? (oder weiss jemand ne sache in der form die ich aufrufe und die dann alle bttons auch aufrufen, also dass ich die procedure des buttons (oder so was) mit destroy ueberschreiben kann ???)
gruss und dank
w
Zuletzt geändert von wbeppler am Do 26. Mär 2015, 12:35, insgesamt 1-mal geändert.
-
- Beiträge: 61
- Registriert: Mo 27. Aug 2012, 15:43
Re: Buttons per Programm entfernen
Was spricht dagegen, die Tage da zu lassen wo sie sind und nur zu verstecken - Button.visible := false oder Button.Hide?
Dann brauchst du auch nachher nix neu zu erzeugen.
Dann brauchst du auch nachher nix neu zu erzeugen.
-
- Beiträge: 131
- Registriert: So 20. Jul 2014, 10:27
- OS, Lazarus, FPC: kubuntu, raspbian, laz 1.2 / 0.9 microcontroller
- CPU-Target: 8-64 bit
- Wohnort: bodensee
- Kontaktdaten:
Re: Buttons per Programm entfernen
danke fuer die idee, aber wie spreche ich die buttons an ?
mein ding ist: klick auf den button, sucht den tag raus den ich zum bearbeiten brauche
beim erstellemn des button (create) mach ich danach caption:= '01.01.2015' etc. und den click hab ich ueberschrieben mit meintag:=caption
ich wuerde den buttons gerne andere tage zuteilen, aber wie heissen die ? ich hol die ja nicht mit drag-drop sondern erstell die in einem array, das array ist aber jedes jahr anders, der februar passt naechstes jahr nicht. mir faellt nur wegwerfen ein, ich weiss aber nicht wie ????
dennoch danke, oder hab ich nen bretterstapel vor dem kopf ?
mein ding ist: klick auf den button, sucht den tag raus den ich zum bearbeiten brauche
beim erstellemn des button (create) mach ich danach caption:= '01.01.2015' etc. und den click hab ich ueberschrieben mit meintag:=caption
ich wuerde den buttons gerne andere tage zuteilen, aber wie heissen die ? ich hol die ja nicht mit drag-drop sondern erstell die in einem array, das array ist aber jedes jahr anders, der februar passt naechstes jahr nicht. mir faellt nur wegwerfen ein, ich weiss aber nicht wie ????
dennoch danke, oder hab ich nen bretterstapel vor dem kopf ?
Re: Buttons per Programm entfernen
Keine Ahnung ob ich dich richtig verstehe, aber Komponenten auf dem Formular kann man mit
http://lazarus-ccr.sourceforge.net/docs ... onent.html
über ihren Namen ansprechen.
Ich würde das Problem aber eher mit einem Grid lösen statt mit einer Button Armada.
http://lazarus-ccr.sourceforge.net/docs ... onent.html
über ihren Namen ansprechen.
Ich würde das Problem aber eher mit einem Grid lösen statt mit einer Button Armada.
-
- Beiträge: 131
- Registriert: So 20. Jul 2014, 10:27
- OS, Lazarus, FPC: kubuntu, raspbian, laz 1.2 / 0.9 microcontroller
- CPU-Target: 8-64 bit
- Wohnort: bodensee
- Kontaktdaten:
Re: Buttons per Programm entfernen
ne grid hatte ich auch mal ueberlegt, aber ich bau hier ein programm nach das ich vor 20 jahren in foxpro schon einmal erstellt habe. und bei ner grid ist der februar gleich lang wie der jan und das sieht halt nicht so gut aus. klar geht das zur not, aber ich will das was ich vor 20 jahren hingekriegt hab heute auch koennen.
mir fehlt ja nur ne idee welches event jedesmal wenn z.b. refresh des forms, ausgrfuehrt wird. ja unter foxpro heisst es .refresh, das ist prakktisch. kann ich so was in laz auch bauen ? wie? dann wuerd ich das in jedes element einbauen.
gruss und dank
w
mir fehlt ja nur ne idee welches event jedesmal wenn z.b. refresh des forms, ausgrfuehrt wird. ja unter foxpro heisst es .refresh, das ist prakktisch. kann ich so was in laz auch bauen ? wie? dann wuerd ich das in jedes element einbauen.
gruss und dank
w
-
- Beiträge: 726
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: Buttons per Programm entfernen
"SubControls" eines "Controls" kannst du so ansprechen:
TWinControl.Controls[Index]
Ein "Control" bei dir Button kann du so entfernen:
Button1.Free;
Alle Steuerungen ("Controls") durchlaufen:
Ich würde in deine Stelle nicht immer alle Buttons freigeben und neuerstellen das macht Programm langsam. Deshalb braucht man heutzutage ein PC mit 4 Kern Prozessor und min. 4 GB RAM damit einige Programme laufen weil viele Programmierer genau das machen.
Ich würde es so machen:
1. Für jeden Monat ein TPanel nehmen und Buttons da drin plazieren. Das macht es einfach und du kannst auch Buttons einfach align=alTop machen.
Ränder kannst du mit TPanel.BorderSpacing einstellen.
Buttons kannst du so ansprechen:
2. Entweder für jeden Monat 31 Buttons erstellen und nicht benötigte verstecken/sichtbar machen oder nur nicht benötigte entfernen/erstellen.
TWinControl.Controls[Index]
Ein "Control" bei dir Button kann du so entfernen:
Button1.Free;
Alle Steuerungen ("Controls") durchlaufen:
Code: Alles auswählen
for i:=0 to ControlCount-1 do
if Controls[i] is TButton then //Wenn das Button is Freigeben
Controls[i].Free; //.. Freigeben
Ich würde es so machen:
1. Für jeden Monat ein TPanel nehmen und Buttons da drin plazieren. Das macht es einfach und du kannst auch Buttons einfach align=alTop machen.
Ränder kannst du mit TPanel.BorderSpacing einstellen.
Buttons kannst du so ansprechen:
Code: Alles auswählen
for i:=0 to PanelJanuar.ControlCount-1 do
if PanelJanuar.Controls[i] is TButton then //Wenn das Button is Freigeben
PanelJanuar.Controls[i].Free; //.. Freigeben
-
- Beiträge: 131
- Registriert: So 20. Jul 2014, 10:27
- OS, Lazarus, FPC: kubuntu, raspbian, laz 1.2 / 0.9 microcontroller
- CPU-Target: 8-64 bit
- Wohnort: bodensee
- Kontaktdaten:
Re: Buttons per Programm entfernen
hallo soner,
DANKE !
nicht nur dass du mir genau die loesung hast, du schreibst auch noch ne guute idee fuer die performance. ich werde es gleich heute noch ausprobieren
DANKE !
gruss Wolfgang
DANKE !
nicht nur dass du mir genau die loesung hast, du schreibst auch noch ne guute idee fuer die performance. ich werde es gleich heute noch ausprobieren
DANKE !
gruss Wolfgang

-
- Beiträge: 131
- Registriert: So 20. Jul 2014, 10:27
- OS, Lazarus, FPC: kubuntu, raspbian, laz 1.2 / 0.9 microcontroller
- CPU-Target: 8-64 bit
- Wohnort: bodensee
- Kontaktdaten:
Re: Buttons per Programm entfernen [solved]
so, habs ausprobiert
funktioniert SUPER !
kleine wichtige aenderung ist aber
for i:=0 to ControlCount-1 do
wersetzen mit
for i:= ControlCount-1 downto 0 do
weil der controlcount staendig aktuell ist und deshalb verrueckte effekte auftreten (jedes 2. objekt wird geloescht dann fehlermeldung)
und weil es bei mir kein TButton ist sondern ein TMyButton sind die noch sehr einfach zu identifizieren . klasse !
DANKE nochmals
funktioniert SUPER !
kleine wichtige aenderung ist aber
for i:=0 to ControlCount-1 do
wersetzen mit
for i:= ControlCount-1 downto 0 do
weil der controlcount staendig aktuell ist und deshalb verrueckte effekte auftreten (jedes 2. objekt wird geloescht dann fehlermeldung)
und weil es bei mir kein TButton ist sondern ein TMyButton sind die noch sehr einfach zu identifizieren . klasse !
DANKE nochmals
