На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Многострочные ячейки в StringGrid :-)), Спасибо за идею
    Не знал как писать в несколько строк в StringGrid прочитал на вашем сайте
    "Многострочные ячейки в StringGrid " там конечно всего 2 строки пишуться, но главоне идея!
    Спасибо за неё, Теперь выкладываю как писал из form6.Memo1 во вторую (с нуля) колонку StringGrid,
    N строк :
    Да и еще кстати если писать в соседние колонки текст с другим количеством строк то StringGrid моргает
    т.к. перерисовыя одни ячейки меняются другие и procedure TForm6.StringGrid1DrawCell вечно срабатывала,
    поэтому я печатаю пустые строки.
    Все привязано к форме Form6 патамуша в проекте толпища фор и просто запутаться по возникшим вопросам
    пишите PartizanDimon@yandex.ru Всегда рад помоч чем смогу ;-)

    ExpandedWrap disabled
      procedure TForm6.Button2Click(Sender: TObject);  // кнопка по которой  всё срабатывает собссно
        var str: string ; i,l :integer;
      begin
        str:=''; i:=0;
        while form6.StringGrid1.Cells[2,i]<>'' do
          begin
            inc(i);
          end;
          if i = form6.StringGrid1.RowCount then form6.StringGrid1.RowCount:=form6.StringGrid1.RowCount+1;
      Gl:=i;           //Gl  глобальная переменная                        
      form6.StringGrid1.Cells[0,i]:=RivetToBottomStr(IntToStr(i),'|',form6.Memo1.Lines.Count);
      form6.StringGrid1.Cells[1,i]:= RivetToBottomStr(DateToStr(form6.DateTimePicker1.Date) ,'|',form6.Memo1.Lines.Count);
        l:=0;
        while Memo1.Lines.Count > l do
          begin
            str:= str + Memo1.Lines.Strings[l]+'|' ; inc(l);
          end;
      form6.StringGrid1.Cells[2,i]:=str;
      form6.StringGrid1.Cells[3,i]:= RivetToBottomStr(form6.Edit1.Text,'|',form6.Memo1.Lines.Count);
      form6.Caption :=str + IntToStr(form6.Memo1.Lines.Count);
      end;
       
       
      procedure TForm6.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
        Rect: TRect; State: TGridDrawState);
      var
         MainLine:string;
         Line1: string;
         Line2: string;
         hGrid: TStringGrid;
         i,q:integer;
      begin
       
        hGrid:= (Sender as TStringGrid);
        MainLine:=hGrid.Cells[ACol, ARow];
        hGrid.Canvas.FillRect(Rect);
       
          q:=GetQuantityChar(MainLine, '|');
          if (q<>0) and (ARow=Gl)
            then begin hGrid.RowHeights[Gl] := 15*q ; end;   // 15 - высота строчки запросто можно сделать переменной
          if q=1 then   begin hGrid.Canvas.TextOut(Rect.Left, Rect.Top,  CutButtomStr(MainLine,1));  exit; end;
        for i :=1 to q-1 do
        begin
       
          begin
            Line1 :=GetICellFromRowStr(MainLine,i-1);
            Line2 :=GetICellFromRowStr(MainLine,i);
          end;
       
          hGrid.Canvas.TextOut(Rect.Left, Rect.Top+{StrHigth}15*(i-1)  , Line1);
          hGrid.Canvas.TextOut(Rect.Left, Rect.Top+{StrHigth}15*i , Line2);
       
         end;
      end;


    Также использовал самодописанные функции :

    ExpandedWrap disabled
      function GetICellFromRowStr(str:string; i:integer ):string ; // Возвращает значение i-й ячейки строки с разделителем '|'
      //Ячейка - в смысле подстрока между двумя разделителями "|"
      var k,j,q,w,stickcount: integer; strr:string[255]; ch:char;
      begin
        stickcount:=0;  k :=0; strr:= '';
        if length(str)=0 then begin  result:='000'; exit; end;
        if GetQuantityChar(str ,'|') = 1 then begin  result:='111'; exit; end;
       
        while stickcount <> i do
          begin
            inc(k);
            if str[k]= '|' then inc(stickcount);
          end;
           q:=k+1;
           inc(k);
         while str[k] <> '|' do
         begin inc(k); end;
            w:=k-1;
          for k := q to w do
          begin
            strr:=strr+str[k];
          end ;
          result:=Strr;
      end;
       
      function  RivetToBottomStr(str:string; ch:char; i:byte):string;// Добавляет i разделителей , задаваемых ch
      var k : byte;
      begin
        for k :=1 to i do
          str:=str + ch ;
          result := str;
      end;

    Админами модераторам : Сразу извеняюсь что запостил такой большой кусок кода ,
    просто не знал куда его прислать,чтобы его выложили где положено :-/ при наличии
    свободного времени просьба объяснить мне как в дальнейшем делать ;-) чтобы всем было хорошо
    надеюсь на сотрудничество ;-)(мыло в начале поста)
    Молодцы! очень полезный сайт!

    M
    Используй форматирование кода! Невозможно ж ничего понять
    Сообщение отредактировано: jack128 -
      Сначала поясни где код: GetQuantityChar()
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script Execution time: 0,0899 ]   [ 18 queries used ]   [ Generated: 15.11.19, 05:12 GMT ]