Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4

Модерирует : ShIvADeSt

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

Aladdinych



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пользуюсь Дельфи 7
Мне нужно организовать плавающий тулбар в приложении
я использовал для этого форму со свойством bsToolWindow
но возникли вопросы:
1. Какие компоненты для кнопок использовать чтобы они имели два состояния нажатое и отжатое
2. Чтобы при наведении на кнопку она выделялась
3. Чтобы кнопки были flat
4. Чтобы при буксировке тулбара на край главного окна он мог зафиксироваться на нем и чтобы его потом можно было отбуксировать назад в плавающее состояние

Всего записей: 322 | Зарегистр. 18-10-2005 | Отправлено: 21:58 17-05-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aladdinych Очевидно, что в качестве кнопок вам подойдут TSpeedButton. Подробности в справке.
Чтобы ваш тулбар можно было буксировать установите ему DragMode=dmAutomatic и DragKind=dkDock. Объекту (например панель), на который можно будет кидать ваш тулбар сделайте DockSite=True. Подробности также в справке, рекомендую поэкспериментировать.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 23:32 17-05-2008 | Исправлено: Frodo_Torbins, 23:33 17-05-2008
mauar



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно создать программу отображающую Юникод при изминении языка програмы на русский язык  загружается данный Юникод из файла ini  
вот код программы:
 

Код:
 
unit Unit1;
 
interface
 
uses
  Windows, Controls, StdCtrls, Classes, SysUtils,   Forms,
  Dialogs;
 
type
  TForm1 = class(TForm)
    CNew: TButton;
    AComboBox1: TComboBox;
    CSample: TLabel;
    TSample: TEdit;
    CButton1: TButton;
    CButton2: TButton;
    CButton3: TButton;
    CheckBox1: TCheckBox;
    procedure CNewClick(Sender: TObject);
    procedure AComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  f:TStringList;
implementation
 
{$R *.dfm}
function lang(k:string):string;
begin
lang:=copy(k,pos('=',k)+1,length(k)-pos(k,'='));
end;
 
procedure TForm1.CNewClick(Sender: TObject);
var
b:byte;
begin
f:=TStringList.Create;
for b:=0 to Form1.ComponentCount-1 do
begin
f.Add(Form1.Components[b].Name+'=')
end;
f.SaveToFile('NewLang.ini');
end;
 
procedure TForm1.AComboBox1Change(Sender: TObject);
var
b:byte;
CompType:char;
begin
f:=TStringList.Create;
f.LoadFromFile(AComboBox1.Text+'.ini');
for b:=0 to f.Count-1 do
begin
CompType:=copy(f.Strings[b],1,1)[1];
if CompType='C' then
TCheckBox(Form1.Components[b]).Caption:=lang(f.Strings[b])
else
if CompType='T'  then
TEdit(Form1.Components[b]).Text:=lang(f.Strings[b])
end;
end;
 
end.
 

Всего записей: 134 | Зарегистр. 31-07-2006 | Отправлено: 04:34 18-05-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mauar
Unicode Controls вам помогут: http://mh-nexus.de/tntunicodecontrols.htm

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 18:58 18-05-2008
AlexVel

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может у кого стоит на компе BDS2006 (Delphi 10) или BDS2007 (Delphi 11).
Очень прошу - заархивируйте (solid RAR,7z) папки:
BDS\4.0\Source\Win32\RTL
BDS\4.0\Source\Win32\VCL
или
BDS\5.0\Source\Win32\RTL
BDS\5.0\Source\Win32\VCL
и выложте куда-нить на обменник (рапидшару или любой другой на Ваше усмотрение)
Архив должен получиться не более 2 мегабайт.
Ссылку можно в ПМ
Просто скачать целиком дистры BDS ради этих файлов не представляется возможным (траф не анлим).
Заранее благодарен

Всего записей: 906 | Зарегистр. 06-10-2003 | Отправлено: 15:48 19-05-2008
GrHnd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как можно внести изменения в код DLL в памяти?
Следующий код в последнем MOV дает ошибку:
Access violation at address 0045C5B1 in module 'Testdll.exe'. Write of address 67183910.
т.е. запрещает запись туда, куда мне надо.
 
libhandle:=LoadLibrary(PAnsiChar(dll));
libhandle:=libhandle+sm;
asm
 MOV            EDI,libhandle
 MOV            EBX,[EDI]
 cmp            EBX,zn_old1
 jne            m1
 MOV            EBX,[EDI+4]
 cmp            EBX,zn_old2
 jne            m1
 mov            EBX,zn_new
 MOV            [EDI],EBX
m1:
end;

Всего записей: 865 | Зарегистр. 01-04-2005 | Отправлено: 15:56 19-05-2008
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
akaGM
Помоему код ты только раздул
и как сделать без case? Варианта hod 2

Всего записей: 210 | Зарегистр. 03-03-2005 | Отправлено: 16:06 19-05-2008
MbIIIIb



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите пожалуйста, как прочитать из файла числа и записать их в массив, строки в файле будут иметь примерно такой вид
1#1#-0.065
1#2#0.235
1#3#0.000056
  .......
где первых два числа индексы элемента массива, а последнее сам элемент.

Всего записей: 1 | Зарегистр. 19-05-2008 | Отправлено: 17:33 19-05-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Вот уже три дня не могу сделать функцию для проверки значения в ини файле. Вот что есть:
 
function IniCheckString(const FFileName, Section, CheckStr : string): Boolean;
var
 Buffer: array[0..1023] of Char;
 ListStat: PChar;
begin
  if GetPrivateProfileString(PChar(Section), nil, nil, Buffer, SizeOf(Buffer), PChar(FFileName)) <> 0 then
  begin
    ListStat := Buffer;
    while ListStat^ <> '' do
      begin
        if (pos(CheckStr, ListStat) = 0) then
          begin
            Result := True;
            Exit;
          end
        else
          Result := False;
        inc(ListStat, lstrlen(ListStat) + 1);
      end;
  end;
end;
 
Ну и использование:
 
if IniCheckString(PChar(GetCurDir + 'LinkURL.dat'), PChar('Stations'), PChar('Значение')) = true then messagebox(happ,'yes','',0);
 
То есть имеем ини файл с содержимым:
[Stations]
Значение
 
И функция должна вернуть тру вслучае нахождения искомой строки. Но она вообще ничего не возвращает. Что не так?

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 20:47 19-05-2008
xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, помогите решить одну (еще) глупую проблему.. у нас есть несколько проектов - везде кнопки и прочие контролы такие дельфийские старые, ну квадратные типа вин98
 
Тут создали в CG Delphi 2007 новый проект, а там кнопочки новые.. хм.. вот вопрос где это посмотреть и как это контролировать - в принципе всё заточено под старую схему, хотелось бы перевести новый проект на старые контролы..
 
но в перспективе может всё переведем на новые :)
 
Добавлено:
Всё - решено - зависит от свойства проекта Enable runtime themes (там где иконка проекту выбирается)

----------
Счастливые мысли приводят к счастливой клеточной биохимии

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 22:28 19-05-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexVel
Ловите: #  
MbIIIIb
Найти знак # вам поможет функция Pos, а преобразовать строку в число можно с помощью функций StrToInt и StrToFloat.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 23:07 19-05-2008 | Исправлено: Frodo_Torbins, 23:15 19-05-2008
Aladdinych



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
объект toolbar помещен на dock объект
как сделать, чтобы не отображалась кнопка закрытия.

Всего записей: 322 | Зарегистр. 18-10-2005 | Отправлено: 23:27 19-05-2008
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988

Цитата:
То есть имеем ини файл с содержимым:  
[Stations]  
Значение  

[Stations] - секция, а дальше должно быть типа
Переменная = Значение  
посмотри на ф-ции ReadString (ReadInteger, ReadBool) у класса TIniFile
там последний параметр значение по умолчанию
ЗЫ: и конечно читаем азы если на апи
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // section name    ---- Stations
LPCTSTR lpKeyName, // key name          ---- Переменная
LPCTSTR lpDefault, // default string       ---- значение по умолчанию
LPTSTR lpReturnedString, // destination buffer --- значение Переменной
DWORD nSize, // size of destination buffer
LPCTSTR lpFileName // initialization file name
);
 

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 11:17 20-05-2008 | Исправлено: greenpc, 11:30 20-05-2008
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
GrHnd
Ну логично запрещает, ибо небо. Зачем туда писать.
Но если сильно хочеться, то можно - для начала надо выставить правильные разрешения на страницу памяти. Для это надо пользоваться функциями  VirtualProtectEx и  VirtualProtect.

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 14:32 20-05-2008
Antananarivu

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
Использую Indy.  
Подскажите пожалуйста, могу ли я узнать размер вложения-файла до того как его сохранить?
То есть:

Код:
Attach := IdMessage.MessageParts.Items[intIndex] as  TIdAttachment ;
??? - здесь нужно узнать имя файла перед тем как его сохранить!
Attach.savetofile(имя_файла);

Пробовал attach.InstanceSize и SizeOf(attach) - но я так понял что это не то - во всяком случае первая функция всегда возвращает 72, а вторая 4.
Заранее спасибо!

Всего записей: 151 | Зарегистр. 10-10-2006 | Отправлено: 14:45 20-05-2008
GrHnd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OdesitVadim
А нет ли работающего примера под WinXP SP2?
 
Добавлено:
Или хотя бы листинга, который можно доработать до живого?

Всего записей: 865 | Зарегистр. 01-04-2005 | Отправлено: 15:35 20-05-2008
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
GrHnd
Ну я подсказал по каким словам гуглить, но если не умеем...
http://forum.oszone.net/archive/index.php/t-52078.html
http://www.delphisources.ru/pages/faq/base/app_xp_hide.html
http://www.cracklab.ru/f/index.php?action=vthread&topic=3463&forum=1&page=-1
собственно сама функция http://www.podgoretsky.pri.ee/ftp/Docs/Delphi/Memory/virtual/VirtualProtectEx.html
Да, следует заметить, что многие фаерволы неоднозначно реагируют на эту функцию и правильно делают.Надо ли оно тебе?
может проще пропатчить длл ещё на диске?

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 16:25 20-05-2008
GrHnd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OdesitVadim
К сожаление dll подписана.

Всего записей: 865 | Зарегистр. 01-04-2005 | Отправлено: 17:10 20-05-2008
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
GrHnd
ну тогда это не по тематике этого форума. Хотя если она подписана, не факт, что там нет других защит.

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 17:34 20-05-2008
Aladdinych



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть Toolbar помещенный на форму.
Когда я его помещаю на панель - режим dkDock и использую стандартный DockManager, Toolbar приобретает вид панели с заголовком из двух параллельных черточек и кнопки [X].
Я хочу чтобы:
1. Кномпки закрытия вообще не было.
2. Элемент для буксировки имел другой вид, отличный от стандартного.
3. Буксировать тоолба можно было за любое место.
 
Как этого добиться?
Нужно ли для этого писать свой dockmanager,
где найти его пример.  

Всего записей: 322 | Зарегистр. 18-10-2005 | Отправлено: 13:26 21-05-2008
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru