Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 01.07.04 08:41 
Hallo,
ich habe in einer datei eine list von higleiter komponenten(alle) mit namen und jetzt möchte ich die die gerade benötig wird gerne laden bzw. erstellen lassen aber nur wenn es die noch nicht gibt.

achja; ich nutze synEdit und die List sind z.b. so aus:
[Higleiter]
SynKomponentennamenSyn1=Filters

hätte jemmand eine Idee ???

_________________
MFG
Michael Springwald, "kann kein englisch...."
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Do 01.07.04 11:49 
[Higleiter] ? ...wenn du dir wenigstens ein bisschen mühe geben würdest das richtig zu schreiben (und ja das kann man auch, wenn man kein englich kann), dann würden sich die leute vielleicht die mühe machen und dir helfen :wink:

_________________
mfg.
mâximôv
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Do 01.07.04 11:57 
Wollma mal nicht so sein! Dieser source wälht über eine combo-box ein 'highlighter' aus und erstellt ihn dann:

ausblenden volle Höhe Delphi-Quelltext
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:
  TSynEditForm = class(TampForm)
    cbHighlighter: TComboBox;
    Panel1: TPanel;
    SynEdit1: TSynEdit;
    procedure cbHighlighterChange(Sender: TObject);
    procedure SynEdit1Change(Sender: TObject);
  private  
    highlighter:TSynCustomHighlighter;
  public
...
    procedure AfterConstruction; override;
  end;


implementation



procedure TSynEditForm.AfterConstruction;
var i:integer;
    hlList:TSynHighlighterList;
begin
  inherited;
  hlList := GetPlaceableHighlighters; // verfügbare 'higleiter' holen und in combo laden
  for i := 0 to hlList.Count-1 do
  begin
    cbHighlighter.AddItem(hlList[i].GetLanguageName,TObject(hlList[i]));
    if hlList[i].ClassName = TSynEditPort(MindPort).HighlighterClass
    then cbHighlighter.ItemIndex := i;
  end;
  {if cbHighlighter.Items.Count > 0 then
  begin
    cbHighlighter.ItemIndex := 0;
    cbHighlighterChange(nil);
  end; }

end;

procedure TSynEditForm.cbHighlighterChange(Sender: TObject); // onChange von combo
var hlClass:TSynCustomHighlighterClass;
begin
  if cbHighlighter.ItemIndex > -1 then
  begin  
    hlClass := TSynCustomHighlighterClass(cbHighlighter.Items.Objects[cbHighlighter.ItemIndex]);
    TSynEditPort(MindPort).HighlighterClass := hlClass.ClassName;
    if (hlCLass <> nil) then
    begin
      if (highlighter <> nil) and (highlighter.ClassType <> hlClass)
      then FreeAndNil(highlighter);
      if highlighter = nil then 
      begin
        highlighter := hlClass.Create(self);
        SynEdit1.Highlighter := highlighter;
      end;  
    end;  
  end else FreeAndNil(highlighter);  
  DataChanged := true;
end;


hoffe du verstehst?

_________________
mfg.
mâximôv
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 01.07.04 15:47 
naja, den ersten teiel habe ich soweit verstandne nur den zweiten nicht:
mein ziel ist es ein Menu zur laufzeit zu erstellen, qullcode:
ausblenden volle Höhe Delphi-Quelltext
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:
{
  Erstellt das Higleiter Menu
  
  Autor: Michael Springwald
  Datum: 01.07.2004
  Upgedatet: 01.07.2004
}


procedure TForm1.CreateHigMenu;
var
  hlList:TSynHighlighterList;
  M:TMenuItem;
  count,i:Integer;
  str:String;
begin  
  inherited;  
  hlList := GetPlaceableHighlighters; // verfügbare 'higleiter' holen und in combo laden
  count:=0;  
  for i := 0 to hlList.Count-1 do begin
    // Higleiter dem Menu hinzufügen
    if count <= HigMaxiMenu-1 then begin
      inc(count);
      m:=TMenuItem.Create(self);
      m.Caption:=hlList.Items[i].GetLanguageName;
      Higleiter1.Add(m);
    end;

    // Menu Eintrag Auswählen erstellen
    if count = HigMaxiMenu then begin
      count:=count+1;
      m:=TMenuItem.Create(Self);
      m.Caption:='-';
      HigLeiter1.Add(m);

      m:=TMenuItem.Create(Self);
      m.Caption:='Menu &Auswählen...';
      M.ShortCut:=TextToShortCut('Strg+H');
      M.OnClick:=HigAusClick;
      HigLeiter1.Add(m);     
    
    end
    else // ListBox fühllen von Form2
      Form2.ListBox1.Items.Add(hlList.Items[i].GetLanguageName);    
  end;  

end;

ich hoffe du versteht mein problem....
und die "highlighter" werden dann aus dem menu bzw. aus der ListBox geladen....
ich hatte das jetzt soweit:
das ich einfach alle highlighter kompos die es gibt aufs form gepackt habe und fertig und dann über eine funktion FindExt(die habe ich selbst geschrieben) mir die richtige komponente rausgesucht und fertig.... aber mein ziel war es die highlighter zur laufzeit zu erstellen(wegen dem speicherplatzt und der geschwindigkeit)

_________________
MFG
Michael Springwald, "kann kein englisch...."
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Do 01.07.04 16:45 
Du brauchst die highlighter nicht alle einzelnd aus die form zu ziehen, nur die unit oder packages ins projekt einbinden! Die verfügbaren klassen bekommst du dann über die higListe :wink: und da wird dann auch ersrmal nix erstellt.

Warum machst du dein menu nicht so ?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
for i := 0 to hlList.Count-1 do 
begin  
    
      m:=TMenuItem.Create(self);  
      m.Caption:=hlList.Items[i].GetLanguageName;  
      // klasse in tag speichern
      m.tag := integer(hlList[i]); 
      // THighlighterClass(TMenuItem(sender).tag) kommst du dann wieder an die klasse
end;       

m:=TMenuItem.Create(Self);  
m.Caption:='-';  
HigLeiter1.Add(m);  
 
m:=TMenuItem.Create(Self);  
m.Caption:='Menu &Auswählen...';  
M.ShortCut:=TextToShortCut('Strg+H');  
M.OnClick:=HigAusClick;  
HigLeiter1.Add(m);


wenn das MenuItem dann gedrückt wird, dann kannst du aus dem tag die klasse holen und den highlighter dann createn :wink:

_________________
mfg.
mâximôv
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 01.07.04 17:07 
nein!
Das problem liegt dasrin das ich einfach nur die erweiterung von einer datei habe und nun möchte ich einfach "schauen" wo ist die richtige komponente und die soll erstellt werden bzw. mit dem gerade erstellen syneditor verküpft werden oder halt wenn er sie nicht findet soller z.b. eine ShowMessage ausgeben !!!

!! aber vielen dank für deine mühen *G* !!

_________________
MFG
Michael Springwald, "kann kein englisch...."
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Fr 02.07.04 09:13 
mimi hat folgendes geschrieben:
nein!
....

!! aber vielen dank für deine mühen *G* !!


Na toll! Es ist immer wieder sinnlos dir helfen zu wollen. Irgendwie scheint es so als würdest du nicht mitdenken wollen...egal! Kann ja nicht so schwer sein eine zuordnungs-tabelle zu erstellen. Macht delphi doch auch so :wink:

_________________
mfg.
mâximôv
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 07.07.04 17:20 
ich habs hinbekommen, ich weiß nichtwas ich hatte aber jetzt gehts ich habe eine datei wo die higleiter drinen stehen mit den erweiterungen und und da schaue ich noch ob bzw. welche komponente ich brauche dann ahabe ich deine funtkion verändert und fertig jetzt gehts am wochende bekommt ihr meinen code *G* bzw. deinen *G* ps: tutmirleid wenn diese beitrag von mir etwas komisch aussieht ich sehe eleiter nur immer nur ein nuchstabe und muss blid schreiben(wenn man so will) ich habs schon in der kritit spalte gepostet *G*

_________________
MFG
Michael Springwald, "kann kein englisch...."
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 05.02.06 12:03 
heute wollte ich mich wider mit den SynEdit komponenten beschäfdigen und hatte ein änliches problem wie vor ca 1. jahr.
Aber heute weiß ich woran es gelegen hat:
ihr müsst einfach alle Highlighter unts in die uses laden, weil die die drinen stehen werden in der liste eingefügt.
Es natürlich ein kleiner nachteiel und hoffentlich weiß jemmand eine lösung die auch ohne das auskommt !

_________________
MFG
Michael Springwald, "kann kein englisch...."