AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi FMX: Seltsames Verhalten beim Entfernen von ListboxItems
Thema durchsuchen
Ansicht
Themen-Optionen

FMX: Seltsames Verhalten beim Entfernen von ListboxItems

Ein Thema von Sherlock · begonnen am 6. Jan 2017 · letzter Beitrag vom 9. Jan 2017
 
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#1

FMX: Seltsames Verhalten beim Entfernen von ListboxItems

  Alt 6. Jan 2017, 09:39
Hi,

ich hätte da gerne wieder mal ein Problem mit FMX unter Berlin 1.2. Man nehme:
  • Ein neues plattformübergreifendes Projekt
  • Auf das Formular kommen zwei TButtons und eine TListBox
  • Ein Button wird AddBtn genannt, der andere RemoveBtn
  • Dann ergänze man den Code wie im folgenden gezeigt
Delphi-Quellcode:
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,
  FMX.ListBox, FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    AddBtn: TButton;
    ListBox1: TListBox;
    RemoveBtn: TButton;
    procedure AddBtnClick(Sender: TObject);
    procedure DelBtnClick(Sender: TObject);
    procedure RemoveBtnClick(Sender: TObject);
  private
    {Private-Deklarationen}
  public
    {Public-Deklarationen}
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}


procedure TForm1.AddBtnClick(Sender: TObject);
var
  myListItem : TListBoxItem;
  myDelBtn : TSpeedButton;
begin
  myListItem := TListBoxItem.Create(ListBox1);
  myListItem.Parent := ListBox1;

  myDelBtn := TSpeedButton.Create(myListItem);
  myDelBtn.Parent := myListItem;
  myDelBtn.Width := 50;
  myDelBtn.Align := TAlignLayout.Right;
  myDelBtn.StyleLookup := 'trashtoolbuttonbordered';
  myDelBtn.OnClick := DelBtnClick;
end;

procedure TForm1.RemoveBtnClick(Sender: TObject);
begin
  if ListBox1.Count > 0 then
  begin
    ListBox1.ListItems[0].Free;
  end;
end;

procedure TForm1.DelBtnClick(Sender: TObject);
begin
  if TFmxObject(Sender).Parent is TListBoxItem then
  begin
    TListBoxItem(TFmxObject(Sender).Parent).IsSelected := True;
    ListBox1.Selected.Free;
    ListBox1.ItemIndex := -1;
  end;
end;

end.
Als Ergebnis kann man mit dem AddBtn Einträge in die Listbox hinzufügen, und mit dem RemoveBtn den jeweils obersten löschen. Das funktioniert wunderbar. In der Listbox gibt es aber netterweise noch einen weiteren Button pro Eintrag, mit dem gezielt dieser Eintrag entfernt werden kann. Wenn man das nutzt ist scheinbar auch alles in Butter, ABER die Titelleiste der Appilikation reagiert dann erst wieder auf Mausklicks, wenn man eine der Komponenten anklickt.
  1. Kann das jemand nachvollziehen?
  2. Weiss jemand wie man das korrigieren kann?

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
 


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 04:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz