Comment puis-je créer un Delphi TSpeedButton ou SpeedButton en C# 2.0?Comment puis-je créer un Delphi TSpeedButton ou SpeedButton en C# 2.0?
Répondre
Est-ce que this aide? On dirait que vous devez gérer l'événement OnPaint, et ne pas prendre ... se concentrer
Le bouton régulier .net 2.0 prend en charge une partie de ce qu'est un TSpeedButton Est-ce que:
- glyphe: image
- plat: FlatStyle
Il ne gère pas:
- vers le bas
- Groupe
Ces deux sont liés, vous pourriez hériter du bouton et OwnerDraw, en ajoutant des fonctionnalités vers le bas et du Groupe.
Codeproject has an example des boutons ownerdraw.
Je me demande si vous voulez créer un contrôle comme un TSpeedButton, ou vous avez juste besoin même genre de résultat final ...
programmation à partir de zéro est certainement possible, mais je ne tacle qui comme un exercice d'apprentissage.
En supposant que vous voulez obtenir un résultat final similaire ...
TSpeedButton de Delphi avait une différence de la norme TButton que les développeurs ont trouvé utile - il était plat, ne pas prendre le focus, et consommé moins de ressources que un bouton normal (car il n'avait pas de poignée Windows sous-jacente).
Lesquelles sont importantes pour vous?
Si vous voulez juste un bouton plat qui n'accepte pas le focus, utilisez un bouton normal avec FlatStyle = Flat (ou PopUp) et TabStop = false. Vous pouvez configurer un glyphe en définissant la propriété Image ou une combinaison de ImageList et ImageIndex/ImageKey. Une alternative à cela serait de rechercher un composant de bouton existant qui se rapproche de vos besoins - un endroit à regarder pourrait être le Krypton Toolkit (libre d'utiliser, voir http://www.componentfactory.com/toolkit_buttoncontrols.php).
Si vous souhaitez réduire le nombre de ressources consommées par votre application, vous obtiendrez probablement un meilleur rendement en regardant ailleurs.
À l'époque de Windows 3.1 (Delphi 1) et Windows 95 (Delphi 2), le nombre de descripteurs disponibles était strictement limité, avec un nombre maximum de systèmes disponibles. Aujourd'hui, avec Windows XP et Vista, le nombre de poignées disponibles est beaucoup plus élevé, et le nombre est par processus et non par système. À moins de créer des milliers et des milliers de boutons, il est très peu probable que vous en soyez à court de ressources.
L'utilisation d'un bouton et la définition de la propriété TabStop sur false ne fonctionnent que lorsque vous tapez sur le formulaire ...
Si vous avez besoin (comme je l'ai fait) d'un bouton qui n'est pas sélectionné lorsque vous cliquez dessus, il n'y a qu'une seule façon de le faire.
La façon dont je l'ai fait, était sous-classe de la classe Button et dans le constructeur appelant les SetStyles et mettant ainsi sélectionnable sur false, comme ceci:
public class ButtonNoFocus : Button
{
public ButtonNoFocus()
: base()
{
base.SetStyle(ControlStyles.Selectable, false);
}
}
Cela a fonctionné pour moi, et il est parfait si vous par exemple avoir un panneau de contrôle avec des boutons qui effectuent des actions à un objet sélectionné ...
- 1. Comment créer un contrôle SysHeader32 en C#?
- 2. Comment créer un flux de jpegs (live) en C++ ou C# ou java? RTSP?
- 3. Delphi et XQuery/XPath 2.0?
- 4. créer un plugin dans Delphi Prism en utilisant Hydra (Remobjects)
- 5. comment créer un graphique à barres et camembert dans asp.net 2.0 en utilisant C#?
- 6. Comment créer des modules PowerShell 2.0?
- 7. Créer un formulaire d'options dans Delphi
- 8. comment puis-je créer un modèle Delphi de type "Surround"?
- 9. Comment créer une pagination conviviale SEO (dans le style Digg.com) en utilisant ASP.Net 2.0 (C#)?
- 10. Méthode d'extension en C# 2.0
- 11. Comment créer un fichier virtuel dans l'application Delphi
- 12. Comment puis-je créer un service Windows dans Delphi?
- 13. Utilisation de Delphi ou de FFMpeg pour créer un film à partir d'une séquence d'images
- 14. comment créer l'application Silverlight dans ASP.net 2.0
- 15. Génériques C# 2.0: Comment créer un objet Action avec zéro paramètre
- 16. Comment créer un client Telnet avec Delphi 5
- 17. Comment créer un bouton non-rectangulaire avec Delphi?
- 18. Comment créer un organigramme? Javascript ou Flash?
- 19. Créer dynamiquement un tableau en C#
- 20. Comment créer un carrousel d'images dans C# en utilisant xna?
- 21. Comment générer un tinyurl en Delphi
- 22. Comment créer un nouveau bureau? C++
- 23. Comment créer un AxHost uniquement en code [C#]
- 24. Comment remplir un ensemble Delphi?
- 25. Générer une énumération aléatoire en C# 2.0
- 26. Comment créer un panneau de bannière en C#?
- 27. Comment créer un fichier texte temporaire en C++?
- 28. Comment créer un handle global en C++ - CLI
- 29. Comment créer un alias pour une classe générique en C#?
- 30. Comment créer un XTextTable dans OpenOffice.org uno en utilisant C#?
Quelles sont les caractéristiques que vous essayez exactement de répliquer? – JamesSugrue
Je suis en train de dupliquer la fonctionnalité "pas de focus" quand quelqu'un clique sur le bouton. Raison: J'essaie de créer un clavier intégré dans une application Windows. Ce clavier doit pouvoir envoyer le coup de clé au contrôle qui a le focus avant d'appuyer sur le bouton du clavier. –