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

antarey

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

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

  • Посещение

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

    2

Весь контент antarey

  1. Можно и так. Не проверял поведение, если подвязать едиты к базе - лейбелы подымутся? Сработает OnChange?
  2. antarey

    TEdit & LiveBinding

    Как определить что Edit привязан к полю таблицы базы данных?
  3. В некоторых приложения на Андроиде и на некоторых сайтах( сейчас к сожалению не могу вспомнить где видел) используется прикольная анимация TextPromt. На словах - TextPromt внутри едита, когда кликаеш на едите -TextPromt подымается над едитом и меняет цвет. Я реализовал так - Для едита чилдреном добавил лейбл, а для лейбл чилдреном FloatAnimation и вот код // --------------------------------------------------------------------------- void __fastcall TForm1::Edit1Enter(TObject *Sender) { TEdit * LEdit = dynamic_cast<TEdit*>(Sender); if (LEdit) { if (LEdit->ChildrenCount >= 3) { if (LEdit->Children->Items[2]->ClassName() == "TLabel") { TLabel * LLabel = dynamic_cast<TLabel*>(LEdit->Children->Items[2]); if (LLabel && LLabel->Children->Items[1]->ClassName() == "TFloatAnimation") { TFloatAnimation * animation = dynamic_cast<TFloatAnimation*>(LLabel->Children->Items[1]); if (animation) { animation->StopValue = -20; if (LEdit->Text == "" || LLabel->Position->Y == 0) { animation->Start(); _di_ITextSettings Settings; if (LLabel->GetInterface(Settings)) { Settings->TextSettings->FontColor = TAlphaColor(claBlue); Settings->StyledSettings = Settings->StyledSettings >> TStyledSetting::ssFontColor; } } } } } } } } // --------------------------------------------------------------------------- void __fastcall TForm1::Edit1Exit(TObject *Sender) { TEdit * LEdit = dynamic_cast<TEdit*>(Sender); if (LEdit) { if (LEdit->ChildrenCount >= 3) { if (LEdit->Children->Items[2]->ClassName() == "TLabel") { TLabel * LLabel = dynamic_cast<TLabel*>(LEdit->Children->Items[2]); if (LLabel && LLabel->Children->Items[1]->ClassName() == "TFloatAnimation") { TFloatAnimation * animation = dynamic_cast<TFloatAnimation*>(LLabel->Children->Items[1]); if (animation) { animation->StopValue = 2; if (LEdit->Text == "") { animation->Start(); _di_ITextSettings Settings; if (LLabel->GetInterface(Settings)) { Settings->TextSettings->FontColor = TAlphaColor(claBlack); Settings->StyledSettings = Settings->StyledSettings >> TStyledSetting::ssFontColor; } } } } } } } } // --------------------------------------------------------------------------- Все отлично работает, но есть один нюанс - когда подвязываешь едит к полю таблички - лейбл перекрывает текст едита, оно то и правильно - я по едиту не кликал. Посему вопрос - как заставить переместиться все лейбелы всех едитов у которых не пустой текст после открытия таблицы . Не хочется делать для всех едитов Control->EnumControls Может кто знает лучший способ? Пример в атаче, структура проекта на скрине TextPrompAnamation.zip
  4. Есть вариант - на кнопку кинуть картинку, а на картинку BitmapListAnimation. Но все должно быть проще
  5. Не получается. В FloatAnimation в списке PropertyName нету ImageIndex , а ручная установка ничего не дает
  6. Добрый день. Есть кнопка,и в нее есть свойство ImageIndex. Задача - сделать мигающую иконку кнопки. Желательно без таймера. Пробовал ColorAnimation - ни в какую не хочет мигать. Добавлял ColorAnimation к самой кнопке и в стилях
  7. Переделал код. В принципе работает, только немного обрезается текст сверху и снизу. Rusland не знаю как в делфи - в си округлять не обязательно - свойство Height - float.
  8. Поставил, и на ресайз тоже. Я вроде где-то читал/слышал что в 10 добавили изменение высоты итема в свойства но в упор не нахожу такого. Зачем етот код? К сожалению не работает. У меня итем создается отдельной процедурой с пустым текстом. В другой процедуре прописывается текст.
  9. Согласно мануалу реализовал код void TfrmMain::CalculateItemHeight(TObject *Sender) { TTextLayout* FTextLayout = TTextLayoutManager::TextLayoutForClass(TTextLayoutManager::DefaultTextLayout); TListBoxItem *ListItem = dynamic_cast<TListBoxItem*>(Sender); FTextLayout->BeginUpdate(); try { FTextLayout->Text = ListItem->Text; FTextLayout->MaxSize = TPointF(ListItem->Width, 1000); FTextLayout->WordWrap = ListItem->WordWrap; FTextLayout->Font = ListItem->Font; FTextLayout->HorizontalAlign = ListItem->TextAlign; FTextLayout->VerticalAlign = ListItem->VertTextAlign; } __finally { FTextLayout->EndUpdate(); } ListItem->Height = FTextLayout->Height; } Прописал события для итема, итемы создаю в рантайме, и ничего Как автоматически подгонять высоту итема под текст? Что я не так сделал?
  10. Нда, иногда и примеры надо смотреть , спасибо за подсказку.
  11. В етом событии отображается прогресс загрузки файла
  12. ZuBy, ето я понимаю и ето все реализовано. Просто для NetHTTPClient есть событие NetHTTPClientReceiveData и оно не отрабатывается. Ето событие надо как-то подвязать через синхронизацию.
  13. TTask::Create и TTask::Run не сильно отличаются по реализации , но я так и не понял как синхронизировать событие компонента NetHTTPClient внутри задачи
  14. antarey

    C++Builder & TTask

    Как в провести синхронизацию для задачи? Есть NetHTTPClient void __fastcall TfrmMain::NetHTTPClientReceiveData(TObject * const Sender, __int64 AContentLength, __int64 AReadCount, bool &Abort) { if (AContentLength > 0) { pbMain->Value = ((float)AReadCount / (float)AContentLength) * 100.f; } else pbMain->Value = AReadCount; } //-------------------------------------------------------------------- void __fastcall TfrmMain::SpeedButton1Click(TObject *Sender) { _di_ITask tsLoadNewComp = TTask::Create([&](){ std::auto_ptr<TStream> inputStream(new TFileStream(System::Ioutils::TPath::Combine(TDirectory::GetParent(ParamStr(0)), "index.dat"), fmCreate)); NetHTTPClient->AcceptEncoding = "gzip, deflate"; NetHTTPClient->Get("..............", inputStream.get()); }); tsLoadNewComp->Start(); } Как сделать, чтобы в задаче tsLoadNewComp отрабатывалась процедура NetHTTPClientReceiveData?
  15. ZuBy, ну это мне видал снифер. Убрал эту строку - эффекта ноль
  16. Есть необходимость прочитать личные сообщения для сайта forum.ru-board.com. TStringList *DataList = new TStringList(); DataList->Add("action=dologin&inmembername=USER&inpassword=PASSWORD=http%3A%2F%2Fforum.ru-board.com%2F"); TStringStream *DataStream = new TStringStream(DataList->Text); TStringStream *ResponseStream = new TStringStream(); try { NetHTTPClient->Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; NetHTTPClient->AcceptEncoding = "gzip, deflate, lzma"; NetHTTPClient->AcceptLanguage = "ru,en-US;q=0.8,en;q=0.6,uk;q=0.4"; NetHTTPClient->ContentType = "application/x-www-form-urlencoded"; NetHTTPClient->UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.101 Safari/537.36 OPR/40.0.2308.52 (Edition beta)"; NetHTTPClient->Post("http://forum.ru-board.com/misc.cgi", DataStream, ResponseStream); NetHTTPClient->Get("http://forum.ru-board.com/messanger.cgi?action=inbox", ResponseStream); } __finally { Memo1->Lines->Clear(); Memo1->Lines->Add(ResponseStream->DataString); } И в мемо получаю - незарегеный пользователь. Если убрать строку NetHTTPClient->Get("http://forum.ru-board.com/messanger.cgi?action=inbox", ResponseStream); в мемо видно что авторизация успешная. Что я не так делаю? Как правильно со страницы логина перейти и прочитать данные со страницы личных сообщений?
  17. Всем спасибо за советы, вроде процесс пошел
  18. Axbor , TNetHTTPClient не требует библиотек опен ссл?
  19. Axbor , ошибка та же
  20. Axbor, еще нет, щас проверю Сысоев Максим до андроида еще не дошел, хотел сначала проверить на винде
×
×
  • Создать...