Обсуждение компонентов. Сравнение, фичи, проблемы - все в эту тему
например здесь или посмотреть книжки Архангельского
Ищи среди компонетов Indy.
Например:
в Items[1]="ул Московская";
а в текстовое поле должно попасть Московская
Например:
в Items[1]="ул Московская";
а в текстовое поле должно попасть Московская
Обычным способом - никак, потому, что даже поменяв в обрабтчике события OnChange, OnSelect содержимое текстового поля, все равно после завершения его работы поле будет содержать текст который был в выбранном элементе.
Например:
в Items[1]="ул Московская";
а в текстовое поле должно попасть Московская
Edit1->Text = List1->Items->Strings[X];
// Вариант 2
Edit1->Text = List1->Items[X]->Text;
//Вариант 3
Edit1->Text = List1->Items[X]->Caption;
Например:
в Items[1]="ул Московская";
а в текстовое поле должно попасть Московская
Так:
TfrmMain = class(TForm)
cbXitruy: TComboBox;
procedure cbXitruyChange(Sender: TObject);
private
{ Private declarations }
procedure OnUser1Message(var M: TMessage); message WM_USER + 1;
public
{ Public declarations }
end;
var
P: PChar;
begin
P := NewText; //NewText - глобальная, всегда!!! доступная строка (например константа)
PostMessage(Handle, WM_USER+1, cbXitruy.Handle, Integer(P));
end;
procedure TfrmMain.OnUser1Message(var M: TMessage);
begin
SendMessage(M.WParam, WM_SETTEXT, 0, M.LParam);
SendMessage(M.WParam, CM_TEXTCHANGED, 0, 0);
end;
Есть не совсем FreeWare (платная), но можно найти с исходниками бесплатно :)
Называется NextSuite - там много всяких штучек, в т.ч. и NextGrid ;)
Про установку компонента там не слова.А то что в readme описанно может для 6го билдера и7го делфи катит но в 2006 девелопер студии там такими пунктами меню и непахнет.
Опенпрожект, открыл, строить(build), правой кнопкой по TICQClient.bpl Инсталл
[ATTACH]3026[/ATTACH]
Всё норм поставилось, в делфи этот компонент видит, как в с++ его добавить ввиду отсутствия интереса мучатся не стал.
Требуется рисовать в list при Style= DropDown.
Style=csOwnerDrawFixed и csOwnerDrawVariable не подходят, так как при этом блокируется Edit
Создал класс производный от TCustomComboBox и переписал функцию CreateParams.
TCustomCombo::CreateParams(Params);
CreateSubClass(Params,"COMBOBOX");
Params.Style=Params.Style|CBS_DROPDOWN|CBS_OWNERDRAWFIXED |WS_VSCROLL|CBS_HASSTRINGS|CBS_AUTOHSCROLL;
}
В оконной процедуре отлавливаю WM_DRAWITEM.
Всё норм поставилось, в делфи этот компонент видит, как в с++ его добавить ввиду отсутствия интереса мучатся не стал.
Если вы устанавливаете компонет в Делфи и хотите также его иметь в С++ Builder то:
Перед Install достаточно было в опциях проекта Делфи поставить галочку: вкладка Linker выбрать Generate all C++ files.
После установки компонет будет и в Делфи и в Builder.
CppWebBrowser это вообщем-то эдакая lightweight обертка над IE, а никакой не компонент. И тормознутость надо искать в IE. Может там с на(д)стройками беда. На крайняк есть HtmlLite/HTMLayout, но VCL-овской обертки над ними не видел. В итоге замучаешься. Но вот некоторые ссылки: раз два
Во первых TCppWebBrowser это компонент, по всех понятиям.
Во вторых он не никаким образом не является оберткой для IE.
Во вторых он не никаким образом не является оберткой для IE.
Давайте по сути вопроса. В чем может заключаться "тормознутость" TCppWebBrowser? В коде VCL? Нет. Значит проблему нужно искать в другом. Вот именно исходя из этого я и сказал что это не компонент. А то что эта штука производная от TComponent мне известно. Тем не менее true-компонентом это ее не делает наряду с TTreeView, TListView и т.п., в отличие от TSpeedButton, TVirtualTreeView. Таким же образом это относится к утверждению об обертке над IE.
И еще раз прошу - давайте по сути вопроса. Нужно просто помочь человеку разобраться а не спорить над понятиями которые у всех могут различаться. Лично я спорить не буду.
А насчет CppWebBrowser - им можно пользоваться, но если выводить скажем 100 строк формата TABLE TR, и при наведении менять цвет однйо строки - вот там просто ж**а становится... тупит очень сильно... и дело не в компе - дело в алгоримтах... ПОтмоу как Opera и 1000 строк на ура обрабатывает... поэтому и ищу что-то похожее на Opera :)
[HTML]<table>
<tr onMouseOver="this.className='over';" onMouseOut="this.className='';"><td>SOME TEXT</td></tr>
... (200 строк) ...
<tr onMouseOver="this.className='over';" onMouseOut="this.className='';"><td>SOME TEXT</td></tr>
</table>[/HTML]
В итоге, что Internet Explorer (6,7), что CppWebBrowser загинаются, пытаясь отрисовать новый класс для строки... Например, в Опере стоит другой движок, поэтому и хоть 1000 строк запихни - тормоза не будет...
Вот меня и интересует возможность это исправить... Поменять CppWebBrowser на что-либо другое...
Я пытался сделать и так:
[html]<ul>
<li>SOME TEXT</li>
... (200 строк) ...
<li>SOME TEXT</li>
</ul>[/html]
А в style.css вынести LI:HOVER, но это стало работать еще медленней, раза в два :)
...
Вот меня и интересует возможность это исправить
...
... а давай спрошу по другому, что нужно получить в итоге, в результате этого действия программы? Создать и заполнить таблицу на 100 строк и при наведении курсора мыши подсвечивать строки?
1. код C++ генерирует HTML-код
2. Выводит сгенерированный код в браузер (встроенные в прогу)
3. человек все это видит, выбирает (составляет) новый запрос, например, нажимая на ссылку - прога генерирует новый HTML-код - и т.д.
При больших объемах информации CppWebBrowser начинает очень сильно тупить.. скажем, если страница больше 15 кб... а бывают страницы и по 50 Кб... ;) И по 150...
При больших объемах информации CppWebBrowser начинает очень сильно тупить.. скажем, если страница больше 15 кб... а бывают страницы и по 50 Кб... ;) И по 150...
Дай хоть архив страницы глянуть для примера.. Только чур со всеми css-ами и прочей лабудой :)
А страницы на диск пишутся, а потом с диска грузятся?
*ttp://depositfiles.com/files/8za42h94f - вложил css, html и js... ;)
*ttp://depositfiles.com/files/8za42h94f - вложил css, html и js... ;)
вполне быстро загружается в IE 6.0
для пользователя это не критично будет - подождать 0.3-0.5 сек
для пользователя это не критично будет - подождать 0.3-0.5 сек
дело не в загрузке... а в "пробегании" по строкам ;) и это еще 5% от того, что может быть ;)
а кто и как там бегает и по каким строкам?
К тому же, строк как я и гоорил может быть 200, 300... и т.д..
В итоге, загрузка этих строк занимает 3-5 секунд... а это ну не просто много, а дофига времени...
- создал сайт, где более 20 бесплатных компонентов для C++Builder 6...ну там посмотрите....и сайт оцените... :)
есть код прорисовки OwnerDraw компонента PageContro1.
Вот я такой смастерил:
int TabIndex, const TRect &Rect, bool Active)
{
TPageControl *Pag = static_cast <TPageControl*>(Control);
TCanvas *Can = Pag->Canvas;
Can->FillRect(Rect);
Can->Pen->Color = clBlue;
Can->Font->Name = "Times New Roman";
Can->Font->Style<<fsItalic;
Gradient(StringToColor("$00FEEDCD"),clRed,Can);
Can->TextOut(Rect.Left+(Rect.Right-Rect.Left-Control->Canvas->TextWidth(Pag->Pages[TabIndex]->Caption))/2,
(Rect.Top+(Rect.Bottom-Rect.Top-Can->TextHeight(Pag->Pages[TabIndex]->Caption))-2)/2+2,Pag->Pages[TabIndex]->Caption);
}
<...>
В котором Gradient выполняет наподобие нечто следуюшего:
Canvas->Pen->Color = clBlack;
Canvas->RoundRect(0,0,w,h,8,8);
Т.е. сделав bitmap, необходимо вывести поверх него ещё текст. Так возможно??