Перейти к содержанию
Fire Monkey от А до Я

antarey

Пользователи
  • Постов

    284
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Сообщения, опубликованные antarey

  1. Как реализовать переворот картинки MasterButton-а как в Андроид 5?

    По клику в принципе без проблем, а вот когда тянешь MultiView на андроиде картинка из трех полос складывается в стрелку и наоборот , когда закрываешь MultiView

  2. На FM почему-то нет TApplicationEvents.

    Мне надо отследить когда форма полностью создалась, OnCreate & OnActivate не подходят

    На ВСЛ делал так

    //---------------------------------------------------------------------------
    void __fastcall TfrmMain::FormCreate(TObject *Sender)
    {
    WM_MyMessage=WM_APP+1;
    PostMessage(Handle,WM_MyMessage,0,0);
    }
    //---------------------------------------------------------------------------
    void __fastcall TfrmMain::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
    {
    if (Msg.message==WM_MyMessage) 
    
    {
    .....
    }
    }
    

    Как сие реализовать на FM XE8?

  3. Есть ли в стандартных средствах что-то для создания отчетов, а особенно интересуют сводные отчеты и желательно чтобы можно было положить на главной форме.

    Для ВСЛ есть и в девекспреса PivotGrid и FastCube, правда ето не встроенные средства :). Девки на FMX ни в какую не хотят переходить, FastCube есть только для для винды и осх, с андроидом что-то тоже не хотят дружить.

    Если нет стандартных средств, - подскажите сторонних разработчиков.

    Вообще-то задача следующая - надо мастер-детал таблицу развернуть по горизонтали, кросс отчеты для этого подходят идеально.

    Всем заранее спасибо

  4. Для TEdit  EditRootPath в цикле динамически создаю дочерние елементы TSpeedButton.

    for (int i = 0; i < CombinePathListItem->Count; i++)
    {
    TSpeedButton *editButton = new TSpeedButton(Application);
    ....
    TSpeedButton *subButton = new TSpeedButton(Application);
    .....editButton->AddObject(subButton);
    EditRootPath->AddObject(editButton);

    Потом в цикле и удаляю же их

    TComponent *buttonMaster,*buttonSub;
    if (EditRootPath->ChildrenCount>2)
    {
    for (int i = 0; i < CombinePathListItem->Count; i++)
    {
    buttonSub=Application->FindComponent("subButton"+IntToStr(i));
    buttonSub->Free();
    buttonMaster=Application->FindComponent("editButton"+IntToStr(i));
    buttonMaster->Free();
    }
    }
    
    
    }

    При повторном создании получаю что компонент с таким именем уже существует, хотя в хелпе написано что в ХЕ7 Free() должна удалять и ставить объект в NULL

    Пробовал использовать FreeAndNil() - вообще вылетает с приложения

     

     

     

  5. Прикольная реализация, объяснение довольно доходчивое :).

    Я уже в принципе реализовал - пришлось высчитывать левое положение по ширине предыдущего контрола. 

  6. Как узнать ширину ScrollBar-а (самой полосы прокрутки) для различных платформ Android/Windows.

     

    Задача в чем - при увеличении длинны дочернего элемента скрулбара появляется полоса прокрутки и ширина дочернего элемента уменьшается, а мне надо чтобы ширина едита не менялась - а для этого  как я понимаю надо увеличить ширину скрулбара на ширину полосы прокрутки, а она разная для разных платформ 
    post-49-0-51753700-1417084900_thumb.png

  7. В динамике создаю несколько дочерних SpeedButton для Edit.

    Длину кнопки вычисляю исходя из Как вычислить размер текста?

    Мне надо чтобы SpeedButton -ы были слева и при уменьшении размеров формы уменьшался размер бутонов.

    Как бы подходит FitLeft , но два нюанса - размер бутона получается больше чем надо и бутоны размещаются друг на друге, надо выравнивать левый край следующего бутона через падинг на ширину предыдущего

    Да, и при увеличении размеров формы необходимо чтобы размеры бутонов ставали на место :)

  8. Я создаю и добавляю  едит в динамике

     

    TEdit *editbutton = new TEdit(Application);
    editbutton->Text=Edit3->Text;
    editbutton->Width=GetTextWidth(Edit3->Text.Trim(),Edit3->Font);
    editbutton->Align=TAlignLayout::FitLeft;
    

    Вот переделал под билдер

    int TForm2::GetTextWidth(String AText,TFont *AFont)
    {
    TTextLayout *TextLayout = TTextLayoutManager::TextLayoutForClass(TTextLayoutManager::DefaultTextLayout);
    
    
    try
    {
       TextLayout->BeginUpdate();
       TextLayout->Text = AText;
       TextLayout->MaxSize = TPointF(1000, 1000);
       TextLayout->WordWrap = false;
       TextLayout->Font = AFont;
       TextLayout->HorizontalAlign = TTextAlign::Leading;
       TextLayout->VerticalAlign   = TTextAlign::Leading;
       TextLayout->EndUpdate();
    
    
       return TextLayout->TextRect.Width();
    }
     __finally
    {
    TextLayout->Free();
    }
    
    
    }
    

    но размер едита больше чем надо

  9. надо убрать строку

    txt->HorzTextAlign = TTextAlign::Leading;

    на билдере будет так

     

    int TForm2::GetTextWidth(String AText,TFont *AFont)
    {
    TText *txt = new TText(Application);
    _di_ITextSettings Settings;
    
    
    try
    {
    txt->BeginUpdate();
    txt->Align = TAlignLayout::alNone;
    txt->Font = AFont;
    if(txt->GetInterface(Settings))
    {
    Settings->TextSettings->VertAlign=TTextAlign::Leading;
    Settings->TextSettings->WordWrap=false;
    Settings->TextSettings->Trimming=TTextTrimming::None;
    Settings->StyledSettings=Settings->StyledSettings>>TStyledSetting::ssOther;
    }
    
    
    txt->AutoSize = true;
    txt->Text = AText;
    txt->EndUpdate();
    return txt->Width+2;
    }
     __finally
    {
    txt->Free();
    }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm2::Edit3KeyDown(TObject *Sender, WORD &Key, System::WideChar &KeyChar,
     TShiftState Shift)
    {
    Edit3->Width=(Edit3->Width>GetTextWidth(Edit3->Text,Edit3->Font))?Edit3->Width:GetTextWidth(Edit3->Text,Edit3->Font);
    }
    //---------------------------------------------------------------------------
    

    но все равно что - то не то - если повешать на OnKeyDown то все нормально, а если менять по клику на какой-то кнопке - то размер больше чем надо :(

  10. AlexG 
     
    TText *txt = new TText(Application);
    try
    {
    txt->Align = TAlignLayout::alNone;
    txt->VertTextAlign = TTextAlign::Leading;
    txt->HorzTextAlign = TTextAlign::Leading;
    txt->Trimming = TTextTrimming::None;
    txt->Font = AFont;
    txt->WordWrap = false;
    txt->AutoSize = true;
    txt->BeginUpdate();
    txt->Text = AText;
    txt->EndUpdate();
    return txt->Width;
    }
     __finally
    {
    txt->Free();
    }
    

    Всегда возвращает 0

×
×
  • Создать...