Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» FAQ по Borland C++ Builder

Автор: Meister Floh
Дата сообщения: 23.02.2009 11:00
Garrett
Ой смеху то.. Мы-то привыкли все решать сложно, а ответ лежит на поверхности.. Совет один: если ничего больше не помогает прочтите наконец инструкцию (с) Мёрфи etc.
Автор: elegam
Дата сообщения: 24.02.2009 09:37
Привет, у меня на форме много label'ов...я хочу вставить картинку на задний фон, чтобы лэйблы были поверх него... как это можно сделать без удаления лэйблов и повторного нанесения, но уже на image?
И еще плюсом небольшой вопрос: при вызове showmessage как сделать, чтобы его caption назывался не project1, а по другому?
Автор: Garrett
Дата сообщения: 24.02.2009 10:51
elegam
1.
- выделяешь мышой все метки
- ctrl-x
- на форму кидаешь TImage, загружешь в него картинку
- щелкаем по форме
- Ctrl-V (вставляем метки обратно на форму, все они выделены)
- в инспекторе объектов ставим transparent=true

2.
про showmessage... читаем хелп и используем MessageBox.
Автор: Meister Floh
Дата сообщения: 24.02.2009 10:53
elegam
Вставляешь картинку на лэйблы, выделяешь ее, а потом помещаешь на задний фон..
Автор: Meister Floh
Дата сообщения: 26.02.2009 09:05
Господа а кто какими прогами пользуется для редактирования ресурсов?
Автор: Garrett
Дата сообщения: 26.02.2009 09:32
Meister Floh
Я иконки рисую в VisualStudio.
Автор: elegam
Дата сообщения: 28.02.2009 13:19
господа выручайте, натворил себе проблем... вообщем хотел удалить седьмую форму, и удалил все файлы для этой формы(unit7.cpp и т.д.), теперь когда пытаюсь скомпилировать программу, то выскакиевает ошибка, что "невозможно открыть unit7.cpp", что делать? =(
Автор: afiget
Дата сообщения: 28.02.2009 15:11
elegam
Поиском по всем файлам проекта нужно найти все ссылки на unit7.cpp и удалить их.
Автор: Garrett
Дата сообщения: 28.02.2009 15:23
elegam
1. восстановить проект или архива и кооректно удалить из среды

2. открыть в блокноте файл проекта *.cbproj и удалить там 2 куска

            <CppCompile Include="Form7.cpp">
                <Form>Form7</Form>
                <DependentOn>Form7.h</DependentOn>
                <BuildOrder>16</BuildOrder>
            </CppCompile>

            <FormResources Include="Form7.dfm"/>

Затем в исходных файлах все строки вида

USEFORM("Form7.cpp", Form7);
и
#include "Form7.h"
Автор: map431
Дата сообщения: 01.03.2009 18:14
Приветствую всех.
Подскажите, как быть в следующем случае. Есть код на Delphi, который по-хорошему должен работать на Builder'е, но не работает (а именно TBitmapPlus). Я всё равно хочу получить его в программе на C++ и для этого, думаю сойдет экспортировать из Delphi и импортировать в Builder. Слова красивые - подскажите, что нужно, чтобы заработало.
Автор: Garrett
Дата сообщения: 02.03.2009 07:15
map431
Выдержка из хелпа:
TBitmapPlus не является визуальной компонентой и не требует инсталляции в палитру компонент: просто включите в проекте Delphi в секцию uses BitmapPlus ( компилятору также д.б. доступны TBitmapPlus.dcu, DirectDraw.dcu, GDIPAPI.dcu, GDIPOBJ.dcu и GDIPUTIL.dcu), а в проект C++ Builder - bmplus.lib и GdiPlus.lib (и bitmapplus.h соответственно) . Примеры использования TBitmapPlus для Delphi и BCB v.5…6 приведены в директории Demo.

Автор: map431
Дата сообщения: 02.03.2009 18:49
Не прокатило.

При подключении gdiplus.lib и bmplus.lib к проекту и #include "bitmapplus.h", как указано в примере, линкер выдаёт большое количество (штук 20) unresolved externals, причем большинствно начинается на System::__linkproc__ __fastcall.
Сам же demo при сборке выдает просто
[Linker Fatal Error] Fatal: Unable to open file vcl50.lib
у меня 6-ая версия Builder'а. На дельфях работает, на билдере - нет.

Поэтому (если по предложенной теме соображений больше нет) мой вопрос в следующем: как в дельфях создать проект статической библиотеки, который можно прилинковать к приложению на билдере (сразу скажу, что в дельфях у меня нет пункта Library в отличие от билдера) и как собственно линковать?
Автор: Meister Floh
Дата сообщения: 08.03.2009 20:23
Народ ну уже мозги сломал.. Если использую стандартный ПрогрессБар в цикле - все работает! Как только пробую пользовать аналогичные компоненты из ДевЭкспресс или из ТМС - шиш! Щаз с ума спрыгну.. Если ставлю таймер и меняю Позишен раз в секунду в ОнТаймер - работает, в цикле шиш...Попробуйте вот такую фичу:


Цитата:

void __fastcall TForm1::Button1Click(TObject *Sender)
{

    for (int i = 0; i < 101; i++) {
ProgressBar1->Position = i; //Стандартный ПрогрессБар
        AdvSmoothProgressBar1->Position = i; //ТМС ПрогрессБар
        cxProgressBar1->Position = i; //ДэвЭкспресс ПрогрессБар
        Sleep(100);
    };
}
Автор: Meister Floh
Дата сообщения: 09.03.2009 10:45
Решилось, должно выглядеть вот так:


Цитата:

void __fastcall TForm1::Button1Click(TObject *Sender)
{

for (int i = 0; i < 101; i++) {
ProgressBar1->Position = i; //Стандартный ПрогрессБар
AdvSmoothProgressBar1->Position = i; //ТМС ПрогрессБар
cxProgressBar1->Position = i; //ДэвЭкспресс ПрогрессБар
Application->ProcessMessages();
Sleep(100);
};
}
Автор: Meister Floh
Дата сообщения: 10.03.2009 13:02
Господа! А никто не экспортировал базу AbsoluteDB в XML? Если да, то при помощи чего..Интересно узнать.. И кто вообще занимался экспортом импортом баз из/в XML.
Автор: Kott
Дата сообщения: 10.03.2009 17:42
У вас странная манера задавать вопросы - ну я регулярно это использую. Вам от этого легче стало чтоли?
Если вам нужно экспорт/импорт использовать в своей программе - то схема проста - открываете файл, считываете данные, если они отвечают вашим задачам - открываете соединение с БД и пишите туда. Точно так же и в обратную сторону. Если вам нужно использовать механизм импорта/експорта самой БД - ну так прочтите документацию по ней и используйте.
Автор: Meister Floh
Дата сообщения: 10.03.2009 20:11
Kott
В том то и дело, что в АбсолютДБ нет ни малейшнго упоминаня об XML. И еще вопрос открываете пишете и т. д. стандартными методами или какими либо установленными VCL?

Добавлено:
А в документации написано так кратко и непонятно... Я признаюсь честно, сталкиваюсь с XML впервые..
Автор: Kott
Дата сообщения: 11.03.2009 12:44
С XML можно работать двумя способами - используя парсеры(например SAXX) или стандартный компонент TXMLDocument. Но как сами понимаете - излагать всю документацию - просто нет времени. Прочтите справку и спросите что не понятно. Для начала ознакомтесь с TXMLDocument - сним работать проще.
Ну и общее понимание про XML никак не помешает.
Автор: Mifonix
Дата сообщения: 11.03.2009 21:32
Добрый вечер уважаемые, ни у кого случаем нет примеров на компонентах indy для С++ Builder, а конкретно интересует IdTCPServer, IdTCPClient, IdUDPServer, IdUDPClient?
Автор: Garrett
Дата сообщения: 12.03.2009 08:26
Mifonix
Кинь мне в ПМ свой e-mail. Я пошлю тебе книгу на русском "Глубины Indy"(Indy in Depth).
Автор: Mifonix
Дата сообщения: 12.03.2009 18:48
Garrett

Такая книга у меня есть! Интересует именно примеры написанные на С++, может кто больше продвинулся в этом освоении относительно примеров из книги "Глубины Indy"(Indy in Depth) и непосредственно на Builder.
Автор: Meister Floh
Дата сообщения: 13.03.2009 18:34
Товарищи! А кто может подсказать, как в проекте сделать датамодуль основной формой? Как это сделано например в примере Барс6 в дэвэкспресс...
Автор: crazyspoOky
Дата сообщения: 14.03.2009 18:48
Подскажите пожалуйста, как в DirectoryListBox увидеть скрытые директории, (как например в FileListBox через filetype) ?
Я пытался так DirectoryListBox1->FileList->FileType = FileListBox1->FileType; но не помогает.
Автор: Garrett
Дата сообщения: 14.03.2009 23:24
crazyspoOky
Никак. Более того, я бы отказался от использования компонентов для Win3.1. Их в любой момент могут отменить, да и вид у них нестандартный.

Ты должен использовать функцию SHBrowseForFolder, она показывает всё!
Автор: Asm64D
Дата сообщения: 15.03.2009 00:37
Mifonix
Самая большая коллекция demos к INDY http://www.indyproject.org/Sockets/Demos/index.EN.aspx но как видите примеры только на Delphi, правда переписать CBulder не составляет труда.
Автор: crazyspoOky
Дата сообщения: 15.03.2009 00:38
Да, так я и поступил. Спасибо большое за ответ. Реализовал через библиотеку <shlobj.h>


Код:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
char Direct[MAX_PATH+1];
BROWSEINFO dir;
memcpy(Direct, "", 3);
dir.hwndOwner = 0;
dir.pidlRoot = NULL;
dir.pszDisplayName = Direct;
dir.lpszTitle = "Выбираем папку с нужными мне файлами";
dir.ulFlags = BIF_USENEWUI |BIF_NONEWFOLDERBUTTON | BIF_STATUSTEXT | BIF_BROWSEFORCOMPUTER | BIF_EDITBOX | BIF_NEWDIALOGSTYLE;
dir.lpfn = NULL;
SHGetPathFromIDList(SHBrowseForFolder(&dir),Direct);

FileListBox1->Directory=Direct;
Label2->Caption=Direct;

}
Автор: Mifonix
Дата сообщения: 27.03.2009 18:56
Asm64D

Спасибо!

Добрый вечер уважаемые!!! Подскажите кто работал с БД Interbase и полями BLOB содержащими картинку или видео файл, как их взять оттуда и поместить на форму например в компонент Image или DBImage для реализации использовать только стандартные компоненты Interbase (FIBPLUS не предлагать), да и желательно реализовать не используя буфер обмена и промежуточного сохранения в файл, а напрямую на форму.
Автор: ShIvADeSt
Дата сообщения: 28.03.2009 05:29
Mifonix
Примерно так, через TMemoryStream
[more]

Код:
procedure TfrmSprCargo.SpeedButton8Click(Sender: TObject);
var
ms :TMemoryStream;
bmpImg :TPicture; // Объект для картинки в битмаповском формате
jpgImg :TJPEGImage; // Объект для картинки в JPEG формате
begin
// загрузка в базу картинок - бмп и джепегов (без разницы) код целиком с инета
if FotoLoad.Execute then begin
ms:=TMemoryStream.Create;
// Создаём картинки в памяти
bmpImg:=TPicture.Create;
jpgImg:=TJPEGImage.Create;
try
bmpImg.Bitmap.LoadFromFile(FotoLoad.FileName); // Пытаемся создать картинку в битмап формате
bmpImg.Bitmap.SaveToStream(ms);
Photo.Picture.Assign(bmpImg.Bitmap); // Отображаем
except
on E:Exception do // УУПС возможно это была JPEG картинка
begin
jpgImg.LoadFromFile(FotoLoad.FileName); // Пытаемся создать картику в JPEG формате
Photo.Picture.Bitmap.Assign(jpgImg); // Отображаем
jpgImg.SaveToStream(ms);
end;
end;
TBlobField(adoSprCargo.FieldByName('Foto')).LoadFromStream(ms);
// Очищаем память
if Photo.Picture.Bitmap.Empty then Photo.Picture:=nil;
ms.Clear;
ms.Free;
bmpImg.Free;
jpgImg.Free;
end;
end;

procedure TfrmSprCargo.adoSprCargoAfterScroll(DataSet: TDataSet);
var
ms:TMemoryStream;// Поток для чтения BLOB из базы
bmpImg:TPicture; // Объект для картинки в битмаповском формате
jpgImg:TJPEGImage; // Объект для картинки в JPEG формате
begin
// при прокрутке записей обновляем информацию в данных о грузе и картинки
lcFrom.KeyValue:=adoSprCargo.FieldByName('StFrom').AsInteger;
lcOtpr.KeyValue:=adoSprCargo.FieldByName('Otpr').AsInteger;
lcPol.KeyValue:=adoSprCargo.FieldByName('Pol').AsInteger;
dtFrom.DateTime:=adoSprCargo.FieldByName('dtFrom').AsDateTime;
tmFrom.DateTime:=adoSprCargo.FieldByName('dtFrom').AsDateTime;
dtTo.DateTime:=adoSprCargo.FieldByName('dtTo').AsDateTime;
tmTo.DateTime:=adoSprCargo.FieldByName('dtTo').AsDateTime;
lcTo.KeyValue:=adoSprCargo.FieldByName('StTo').AsInteger;
ms:=TMemoryStream.Create;
TBlobField(adoSprCargo.FieldByName('Foto')).SaveToStream(ms); // Приводим поле к типу блоб и считываем в поток
// Создаём картинки в памяти
bmpImg:=TPicture.Create;
jpgImg:=TJPEGImage.Create;
try
ms.Seek(0,soFromBeginning); // Устанавливаем позицию потока на начало
bmpImg.Bitmap.LoadFromStream(ms); // Пытаемся создать картинку в битмап формате
Photo.Picture.Assign(bmpImg.Bitmap); // Отображаем
except
on E:Exception do // УУПС возможно это была JPEG картинка
begin
ms.Seek(0,soFromBeginning); // Устанавливаем позицию потока на начало
jpgImg.LoadFromStream(ms); // Пытаемся создать картику в JPEG формате
Photo.Picture.Bitmap.Assign(jpgImg); // Отображаем
end;
end;
// Очищаем память
if Photo.Picture.Bitmap.Empty then Photo.Picture:=nil;
ms.Clear;
ms.Free;
bmpImg.Free;
jpgImg.Free;
end;

Автор: Mifonix
Дата сообщения: 29.03.2009 10:17
ShIvADeSt

Спасибо, буду пробовать!
Автор: AddMen
Дата сообщения: 29.03.2009 13:51
Подскажите
создаю обработку исключительной ситуации

Код:
try
fp=fopen("data\\prog.dat", "r+"); (1)
except (2)
<обработка> (3)
end; (4)

Страницы: 12345678910111213141516171819202122232425262728

Предыдущая тема: ms exchange


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.