antarey
Пользователи-
Постов
284 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Весь контент antarey
-
Да к любой, через LiveBindings
-
Можно и так. Не проверял поведение, если подвязать едиты к базе - лейбелы подымутся? Сработает OnChange?
-
Как определить что Edit привязан к полю таблицы базы данных?
-
В некоторых приложения на Андроиде и на некоторых сайтах( сейчас к сожалению не могу вспомнить где видел) используется прикольная анимация 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
-
Есть вариант - на кнопку кинуть картинку, а на картинку BitmapListAnimation. Но все должно быть проще
-
Не получается. В FloatAnimation в списке PropertyName нету ImageIndex , а ручная установка ничего не дает
-
Добрый день. Есть кнопка,и в нее есть свойство ImageIndex. Задача - сделать мигающую иконку кнопки. Желательно без таймера. Пробовал ColorAnimation - ни в какую не хочет мигать. Добавлял ColorAnimation к самой кнопке и в стилях
-
C++Builder 10.1 Upd1 и автоматическое изменение высоты TListBoxItem
antarey опубликовал вопрос в Прочие вопросы
Согласно мануалу реализовал код 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; } Прописал события для итема, итемы создаю в рантайме, и ничего Как автоматически подгонять высоту итема под текст? Что я не так сделал? -
Нда, иногда и примеры надо смотреть , спасибо за подсказку.
-
В етом событии отображается прогресс загрузки файла
-
ZuBy, ето я понимаю и ето все реализовано. Просто для NetHTTPClient есть событие NetHTTPClientReceiveData и оно не отрабатывается. Ето событие надо как-то подвязать через синхронизацию.
-
TTask::Create и TTask::Run не сильно отличаются по реализации , но я так и не понял как синхронизировать событие компонента NetHTTPClient внутри задачи
-
Как в провести синхронизацию для задачи? Есть 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?
-
Есть необходимость прочитать личные сообщения для сайта 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); в мемо видно что авторизация успешная. Что я не так делаю? Как правильно со страницы логина перейти и прочитать данные со страницы личных сообщений?
-
Всем спасибо за советы, вроде процесс пошел
-
Axbor , TNetHTTPClient не требует библиотек опен ссл?
-
Axbor , ошибка та же
-
Axbor, еще нет, щас проверю Сысоев Максим до андроида еще не дошел, хотел сначала проверить на винде