Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 98 из 116<  1 ... 95  96  97  98  99  100  101 ... 116  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
ядерный отход
НУ потому, потому что конечно оригинально, но через пятую точку все. Плюс органичность интерфейса никакая получается.

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!



Партнер
 

Member
Статус: Не в сети
Регистрация: 21.01.2004
Откуда: ядерная помойка
Максим писал(а):
НУ потому, потому что конечно оригинально, но через пятую точку все. Плюс органичность интерфейса никакая получается.
Ты же сам хотел, чтоб 3 кнопки всплывали. Или нужно чтоб они всплывали именно на том же тулбаре рядом с екущей кнопкой? Ну тогда что мешает их поместить при событии mousehover рядом с текущей кнопкой? Правда, гуляющие на тулбаре кнопки - это та ещё "органичность" :laugh:

_________________
memento mori


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
ядерный отход
Ну гулять то кнопки по размерам не должны :)
Вообщем будем искать решение.

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 21.01.2004
Откуда: ядерная помойка
Максим
по размерам нет - по положению - да.

_________________
memento mori


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
ядерный отход
ДА ладно, как-нибудь напишу так, что нормально все будет показываться. А тулбар попробую из TMS pack применить :)

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
to all
Столкнулся с мини проблемой. Нужно сделать так, чтобы на кнопке текст отображался не посередине, а слева.
Стало быть, как это сделать?

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 08.11.2005
Максим писал(а):
Стало быть, как это сделать?

Использовать компонент типа TBitBtn. Тут два варианта, либо исользуешь картинку с нужной тебе надписью слева, либо пишешь нужную надпись в Caption, в Glypt аттачишь пустышку(картинку размером 1х1, серого цвета), в Layout ставишь blGlyphRight и Spacing выравниваешь как надо
Layout - расположение картинки относительно текста
Spacing - расстояние от картинки до текста в пикселах

_________________
AM4/B550-F/5950X/128Gb/4070S/4x4Tb NVMe


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
Mike3000
А если это компонент самописный, просто основан на кнопке от Developer Express? ;)

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 08.11.2005
Максим писал(а):
просто основан на кнопке от Developer Express?

ну пробелами в кэпшене докидай

_________________
AM4/B550-F/5950X/128Gb/4070S/4x4Tb NVMe


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
Mike3000
Ну я просто по другому решил написать и работает даже :)
Код:
Procedure TRegistryButton.CNDrawItem(Var Message: TWMDrawItem);
Var
  SaveIndex: Integer;
Begin
  Inherited;
  With Message.DrawItemStruct^ Do
  Begin
    SaveIndex := SaveDC(hDC);
    FCanvas.Lock;
    Try
      FCanvas.Handle := hDC;
      FCanvas.Font := Font;
      FCanvas.Brush := Brush;
      DrawButton(rcItem, itemState);
    Finally
      FCanvas.Handle := 0;
      FCanvas.Unlock;
      RestoreDC(hDC, SaveIndex);
    End;
  End;
  Message.Result := 1;
End;

Procedure TRegistryButton.DrawButton(Rect: TRect; State: UINT);
Var
  OldMode: Longint;
  IsDown: Boolean;
  OldColor: TColor;
  //OrgRect: TRect;
Begin
  //OrgRect := Rect;
  IsDown := State And ODS_SELECTED <> 0;
 
  OffsetRect(Rect, 5, 0);
  If IsDown Then
    OffsetRect(Rect, 1, 1);

  OldColor := FCanvas.Brush.Color;
  FCanvas.Brush.Color := Self.Colors.Default;
  FCanvas.Brush.Color := OldColor;
  OldMode := SetBkMode(FCanvas.Handle, TRANSPARENT);

  FCanvas.Font.Color := Font.Color;
  DrawText(FCanvas.Handle, PChar(Caption), -1, Rect,
    DT_SINGLELINE Or DT_LEFT Or DT_VCENTER);
  SetBkMode(FCanvas.Handle, OldMode);
End;

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 08.11.2005
Максим
Код:
  DrawText(FCanvas.Handle, PChar(Caption), -1, Rect,
    DT_SINGLELINE Or DT_LEFT Or DT_VCENTER);

:D мы не ищем легких путей?

Код:
FCanvas.Brush.Color := OldColor;

это зачем?

_________________
AM4/B550-F/5950X/128Gb/4070S/4x4Tb NVMe


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
Mike3000
Цитата:
Код:
FCanvas.Brush.Color := OldColor;

это зачем?

Сначала там поставил fillrect, а потом решил отдать отрисовку этой части самому родительскому компоненту.
А по поводу того, что не ищу легких путей - гм, возможно и так, зато написал и все работает, причем достаточно быстро и точно в итоге лучше получилось, чем если бы хотел tbitbtn использовать. Тем паче все равно из-за других возможностей просто пришлось писать компонент, и почему бы тогда самому не написать рисование текста???

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 07.10.2003
Откуда: Russia, Moscow
Спустя лет 5 (или 6) пришлось снова добраться до дельфей.
в richedit надо проматывать скролл к нужной точке. Строчку я выделяю, но строки к ней не проматываются.
найденный в гугле способ посылать ему сообщение (не помню, дома гляну, что-то про каретку), скролл не проматывает.

_________________
В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru


 

Member
Статус: Не в сети
Регистрация: 21.01.2004
Откуда: ядерная помойка
armadillo
в .net есть функция ScrollToCaret(), думаю, что здесь тоже должно быть что-то вроде этого, и ещё что-то совершенно точно есть способ через функцию winAPI

_________________
memento mori


 

Junior
Статус: Не в сети
Регистрация: 04.09.2007
Помогите Пожалуйста кто знает.
Я экспортировал из реестра в файл zum.reg ключ, но не могу занести строки из него в RichEdit, выдаёт пару символов и кучу пустых строк. Я так понимаю всё дело в кодировке, так как похоже что полученный reg файл в Unicode, но как это добро перекодировать в понятный для RichEdit формат. Если можно, то напишите пример. Заранее спасибо. Я собственно пытался прочитать полученыый reg файл способом написанным ниже, но увы ничего не выходит.
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
f: TextFile;
s: WideString;
Begin
AssignFile(F, 'zum.reg');
Reset(F);
While not Eof(F) Do
Begin
ReadLn(F, s);
RichEdit1.Lines.Add(AnsiString(s));
End;
closefile(f);
end;


 

Member
Статус: Не в сети
Регистрация: 21.01.2004
Откуда: ядерная помойка
inndim
используй WideString вместо AnsiString (если дело действительно в этом)

_________________
memento mori


 

Junior
Статус: Не в сети
Регистрация: 04.09.2007
ядерный отход писал(а):
inndim
используй WideString вместо AnsiString (если дело действительно в этом)

Не помогает, s я и так объявил как WideString, пробовал без AnsiString, результат один и тот же. Дело в том что zum.reg который я экспортировал из regedit это обычный текстовой файл, но в кодировке unicode, а RichEdit его не понимает. Сейчас нашёл функцию WideCharToString и переделал код, но опять не помогает, заносит пустые строки, как же быть-то?
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
f: TextFile;
s: WideString;
Begin
AssignFile(F, 'zum.reg');
Reset(F);
While not Eof(F) Do
 Begin
  ReadLn(F, s);
  richedit1.Lines.Add(WideCharToString(PWideChar(s)));
 End;
closefile(f);
end;


 

Member
Статус: Не в сети
Регистрация: 21.01.2004
Откуда: ядерная помойка
inndim
посмотри дебаггером, в каком месте неправильно работает - в ReadLn или в richedit1.Lines.Add

_________________
memento mori


 

Member
Статус: Не в сети
Регистрация: 07.10.2003
Откуда: Russia, Moscow
по моему вопросу:

Код:
i:=findtext(FuncListBox.Items[FuncListBox.ItemIndex],0,length(text),[stMatchCase]);
    SetScrollPos(richedit.Handle, SB_VERT, round(i/3), True);


проблема в том, что findtext и get|setscrollpos оперируют разным размером.
максимально возможный скролл в данном тексте 2617, length(text) - 8к c чем-то.
поставил такой костыль, но это бред.

_________________
В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru


 

Junior
Статус: Не в сети
Регистрация: 04.09.2007
ядерный отход писал(а):
inndim
посмотри дебаггером, в каком месте неправильно работает - в ReadLn или в richedit1.Lines.Add

Спасибо что навёл на правильную мысль, похоже что и вправду ReadLn глючит, ибо вот в таком виде (ниже) всё работает, ура!!!
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  Buffer: WideString;
  Stream: TFileStream;
begin
  Stream := TFileStream.Create('zum.reg', fmOpenRead);
  try
    SetLength(buffer, Stream.Size);
    Stream.Read(Buffer[1], Stream.Size);
    Memo1.Lines.Text := Buffer;
  finally
    Stream.Free;
  end;
end;


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 98 из 116<  1 ... 95  96  97  98  99  100  101 ... 116  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan