AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Button Selbstzerstörung

Ein Thema von weisswe · begonnen am 25. Aug 2015 · letzter Beitrag vom 27. Aug 2015
Antwort Antwort
Seite 3 von 3     123
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
642 Beiträge
 
FreePascal / Lazarus
 
#21

AW: Button Selbstzerstörung

  Alt 26. Aug 2015, 09:03
einfachste Version: mach den Button selbstmord nicht im onClick, sondern im OnMouseUp/OnKeyUp
Die Exceptions kommen, weil normalerweise eben nach OnClick noch einige andere Events kommen, die dann bei bereits zerstörter Instanz knallen.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung

Geändert von IBExpert (26. Aug 2015 um 09:06 Uhr)
  Mit Zitat antworten Zitat
weisswe
(Gast)

n/a Beiträge
 
#22

AW: Button Selbstzerstörung

  Alt 26. Aug 2015, 09:25
Hallo!

Danke für die vielen Reaktionen.

Hier einige Details zu meinem Projekt und wofür ich das brauche:
- Firemonkey Desktop und Mobile App (XE8)
- dynamsiche virtuelle UI für verschiedene hierachische Layer (Erzeugung neuer) - ich nenne sie in der Datenbank allgemein "bubbles"
- das "Zerstören" hab ich sowieso nicht in einem OnClick-Event sondern in einem MouseUp-Event (brauch ich für die Toucheingabe -> speziell Win10 (LongPress))
- mein Beispiel hier ist eine sehr vereinfachte Darstellung des Problems
- Lösung wurde von Sir Rufo gegeben die bereits eingebaut ist und bestens funktioniert - Danke nochmal
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#23

AW: Button Selbstzerstörung

  Alt 26. Aug 2015, 09:56
Mir entgeht der Sinn der Übung.
Kleiner Hinweis: Es geht nicht primär um das Anzeigen von Buttons
Ich verstehe schon, dass die Beantwortung der akademischen Frage, wie so ein Problem zu lösen ist, vielleicht in ganz speziellen Konstellationen relevant sein kann - mir fallen aber eigentlich keine Anwendungen dafür ein.

Bei der geschilderten Aufgabe halte ich es jedenfalls nicht für zielführend, ständig Buttons zu zerstören und neu zu erstellen. Es wäre hier meines Erachtens eben wesentlich gescheiter, mit einem Feld von vorher erstellten Buttons zu operieren (oder, falls keine sinnvolle Maximalzahl angegeben werden kann, die Buttons bei Bedarf on the Fly zu erstellen, wenn keine unsichtbaren Buttons mehr in Reserve sind), die je nach Bedarf angezeigt werden oder nicht.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#24

AW: Button Selbstzerstörung

  Alt 26. Aug 2015, 10:01
... manchen leuten scheint vernichten eben einfach spass zu machen ...
In den Spiegel geschaut?
  Mit Zitat antworten Zitat
weisswe
(Gast)

n/a Beiträge
 
#25

AW: Button Selbstzerstörung

  Alt 26. Aug 2015, 10:15
Ok - noch ein paar Infos.

Es handelt sich nicht um "gewöhnliche Buttons" die ich dynamisch erstellen muss, sondern um irgendwelche Objekte.
Da gibt es keine maximale Anzahl statischer Objekte.
Die Objekte sind z.b. Häuser, Bäume, Autos
In einem anderen Fall Sonnensysteme, Planeten, Monde
Oder auch nur Kreise, Rechtecke, Linien, ...

Darum nenne ich sie allgemein Bubbles...
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#26

AW: Button Selbstzerstörung

  Alt 26. Aug 2015, 10:34
irgendwelche Objekte ... Darum nenne ich sie allgemein Bubbles...
Objects wäre auch zu einfach
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#27

AW: Button Selbstzerstörung

  Alt 26. Aug 2015, 11:32
Zitat:
Es handelt sich nicht um "gewöhnliche Buttons" die ich dynamisch erstellen muss, sondern um irgendwelche Objekte.
Auch da wäre zu überlegen, ob es nicht besser wäre, die Objekte (Nachdem sie auf der Form dargestellt werden, gehe ich davon aus, dass sie alle von TControl abgeleitet sind, und es gibt wohl nur eine begrenzte Anzahl von Varianten), die man nicht mehr braucht, auf Reserve vorzuhalten, statt sie zu zerstören:

Delphi-Quellcode:
Type

Form1=class(Tform)
  private
  FObjects: array of TControl;

...

function Form1.Newcontrol (Typ: TControlClass): TControl;
var
  l: integer;
  o: TControl;
begin
for o in FObjects do
    if not o.visible and (o is Typ)
    then begin
         o.Visible:=true;
         result:=o;
         exit;
         end;
result:=Typ.Create(self);
result.Parent:=self;
l:=length(FObjects);
setlength(FObjects, l+1);
FObjects[l]:=result;
end;
und die Controls, die man gerade nicht braucht, statt zu löschen, einfach invisible setzen.

Geändert von idefix2 (26. Aug 2015 um 11:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#28

AW: Button Selbstzerstörung

  Alt 26. Aug 2015, 12:54
Das muss nicht der bessere Ansatz sein.

Wenn Du jetzt 1 Button und 20 Labels hast und in der nächsten Darstellung 1 Label und 20 Buttons und in der nächsten Darstellung 10 Checkboxen und 1 Edit würde es einen unnötigen Aufwand mit sich bringen, die aussortierten Controls ständig weiter mitzuschleppen und zu behandeln.
Wenn man z.B. ein Control sucht muss man ggf. auch nochmal die Karteileichen überprüfen.

Es gibt natürlich Anwendungsfälle, wo solch eine Pufferung sinnvoll ist, aber ganz generell kann man das sicher nicht sagen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#29

AW: Button Selbstzerstörung

  Alt 26. Aug 2015, 13:52
Das muss nicht der bessere Ansatz sein.
Stimmt, muss nicht:
Auch da wäre zu überlegen, ob es nicht besser wäre, ...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#30

AW: Button Selbstzerstörung

  Alt 27. Aug 2015, 15:28
Wie war das nochmal?
Säge nicht den Ast ab, auf dem du grade sitzt?

Delphi-Referenz durchsuchenCM_RELEASE
Einfach mal bei TForm abgucken, den Button ableiten und es dort implementieren.
(wäre auch zu einfach gewesen, wenn Emba das einfach bereits ins TComponent/TControl/TWinControl implementiert hätte)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:06 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