如何“刷新”TListBox?

问题描述

我正在创建一个显示账单号码的应用,就像你在麦当劳看到的那样。 POS 系统向我的应用程序发送账单号码,这些号码显示在名为“ListBoxPrep”的 TListBox 中。然后,当 POS 系统向我的应用程序发送要删除的帐单编号时,我的应用程序将其从“ListBoxPrep”中删除并将其添加到“ListBoxReady”中。 POS 和我的应用程序之间的每一次通信都是通过 TCP 连接完成的,我没有问题。

我面临的问题是,即使在通过“pItem->Free();”删除后,我仍然看到该数字仍保留在“ListBoxPrep”中。 “pItem”是 TListBoxItem 的指针。我希望数字在我的应用程序从 POS 接收到“删除信号”后立即消失,尤其是在没有用户交互(例如单击面板等)的情况下。我想使用 TTimer,但我不知道如何使“ListBoxPrep”刷新本身。你有什么想法可以这样做吗?任何建议将不胜感激。我使用的是 RAD Studio 10.4。

在我的应用收到来自 POS 的“删除信号”后,我仍然看到右侧的数字。他们应该消失。

After removing the number from right side

只要我点击“ListBoxPrep”,数字就会消失。

enter image description here

void __fastcall TForm1::IdTCPServerExecute(TIdContext *AContext)
{
    //We receive data: POS --> Screen(PC)
    String sentDataFromPOS = AContext->Connection->Socket->ReadLn();

    if(sentDataFromPOS .IsEmpty())
    {
        ShowMessage("Data sent from POS is empty!");
        return;
    }

    // 1. Find an order number to move to the right (prep -> ready)
    int indexOrderToRemove = ListBoxPrep->Items->IndexOf(sentDataFromPOS);

    // 2. Add the order number to the "Ready list"
    addNumberToReady(sentDataFromPOS);

    // 3. Remove the order from the "Prep list"
    ListBoxPrep->BeginUpdate();
    TListBoxItem* pItem = ListBoxPrep->ItemByIndex(indexOrderToRemove);
    pItem->Free(); // HERE I have a problem

    // test: To refresh the screen
    LayoutLeft->Visible = false;
    LayoutLeft->Visible = true;

    /*
    ListBoxPrep->Enabled = false;
    ListBoxPrep->Visible = false;
    ListBoxPrep->Enabled = true;
    ListBoxPrep->Visible = true;
    ListBoxPrep->Repaint();
    */
    ListBoxPrep->EndUpdate();
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)